Временно уберите незафиксированные изменения в Подверсии (а-ля “притон мерзавца”)

По-моему, это - больше вопрос персонального предпочтения. nAnt является большой платформой, и MSBuild почти как способный. Со способностью легко разработать пользовательские задачи (в обеих платформах) можно выполнить почти что-либо, что необходимо сделать.

я не могу ответить на "все еще поддерживаемую" часть Ваших вопросов, но я сказал бы, довольны ли Вы уже nAnt тогда, это, вероятно, жизнеспособно. Если Вы (или кто-то в Вашей группе) знакомы с MSBuild тогда, это - прекрасный способ пойти также.

305
задан Cœur 8 October 2017 в 19:05
поделиться

7 ответов

Когда у меня есть незафиксированные изменения из одной задачи в моей рабочей копии и мне нужно переключиться на другую задачу, я делаю одно из двух:

  1. Получение новой рабочей копии для вторая задача.

    или

  2. Запустить ветку:

     рабочая копия $ svn copy CURRENT_URL_OF_WORKING_COPY SOME_BRANCH
    рабочая копия $ svn переключатель SOME_BRANCH
    рабочая копия $ svn commit -m "незавершенная работа"
    переключатель workingcoyp $ svn WHATEVER_I_WAS_WORKING_ON_BEFORE
    

У меня есть несколько скриптов, которые помогают это автоматизировать.

67
ответ дан 23 November 2019 в 01:21
поделиться

Мне тоже нужна эта функция . В настоящее время я использую TortoiseSVN.

Я не нашел надежного решения, кроме как экспортировать дерево, вернуться обратно в репозиторий, внести свои изменения и зафиксировать, а затем сравнить изменения из экспортированного дерева обратно в каталог, контролируемый исходным кодом, с помощью такого инструмента, как Beyond Compare.

Или другое решение может заключаться в переходе из HEAD в другой каталог, внесении изменений и фиксации. Как только вы'

1
ответ дан 23 November 2019 в 01:21
поделиться

Самый простой способ - использовать временную ветку, например:

$ svn copy ^/trunk ^/branches/tempbranch
$ svn switch ^/branches/tempbranch
$ svn commit -m "Stashed"
$ svn switch ^/trunk
$ ... hack away in trunk ...
$ svn commit -m "..."
$ svn merge ^/branches/tempbranch .
$ svn rm ^/branches/tempbranch
$ ... continue hacking

Это можно (и, вероятно, нужно) поместить в скрипт если делать это на более регулярной основе.

42
ответ дан 23 November 2019 в 01:21
поделиться

Другой вариант - скопировать текущую проверку в новый каталог и отменить все изменения. таким образом вы избавитесь от хлопот по созданию временной ветки на вашем сервере - в конце концов, хранение - это локальная операция, которую не все должны видеть, и ее можно выполнять довольно часто.

после фиксации исправления вы можете обновить свою основную рабочую скопируйте и удалите «область хранения»

3
ответ дан 23 November 2019 в 01:21
поделиться

Вы можете сохранить свои текущие изменения с помощью svn diff в файл патча, а затем вернуть вашу рабочую копию:

svn diff > stash.patch
svn revert -R .

После того, как вы внедрили свою подготовительную функцию, вы можете затем примените свой патч с помощью утилиты patch:

patch < stash.patch

Как отмечали другие, это не будет работать с svn: properties и операциями с деревом (добавление, удаление, переименование файлов и каталогов).

Двоичные файлы могут также вызывают проблемы, я не знаю, как patch (или TortoiseSVN в данном случае их обрабатывает).

175
ответ дан 23 November 2019 в 01:21
поделиться

В этом сообщении блога рекомендуется использовать diff и patch.

  • git stash примерно становится svn diff> patch_name.patch; svn revert -R.
  • git stash apply становится patch -p0

Обратите внимание, что это не сохраняет изменения метаданных или (я думаю) каталог создает / удаляет. (Да, svn отслеживает их отдельно от содержимого каталога, в отличие от git.)

326
ответ дан 23 November 2019 в 01:21
поделиться

Я не знаю простого способа сделать это с помощью svn. Честно говоря, я бы посоветовал использовать git-svn для создания репозитория git, который действует как рабочая копия svn, и просто использовать с этим git stash . Просто замените git pull на git svn rebase и git push на git svn dcommit , и вы сможете сохранить 90% рабочего процесса git. и по-прежнему разговаривать с svn-сервером.

8
ответ дан 23 November 2019 в 01:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: