Как сказать TortoiseSVN, что переименованный файл был переименован (не удален и повторно добавлен)?

использование VisualSVN и TortoiseSVN здесь.

Я переименовал свой файл. Я заметил, что он говорит добавить и удалить, что для меня означает, что история может быть стерта?

каков наилучший способ переименования файла без потери истории в Subversion?

6 ответов


щелкните правой кнопкой мыши файл > TortoiseSVN > переименовать.


история не будет удалена, но вы потеряете трассировку истории, так как это, казалось бы, два несвязанных файла.

с TortoiseSVN docs:

Если вы хотите сделать простое переименование файла или папки на месте, используйте контекстное меню → переименовать... Введите новое имя элемента, и все готово.

Восстановление Переименований Файлов

Иногда ваша дружественная IDE переименует файлы для вас как часть рефакторинг упражнения, и, конечно, это не говорит Subversion. Если вы попытаетесь зафиксировать свои изменения,Subversion увидит старое имя файла как отсутствующее, а новое-как неверсионный файл. Вы можете просто проверить новое имя файла, чтобы добавить его, но затем вы потеряете трассировку истории, так как Subversion не знает, что файлы связаны.

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

многие другие случаи охвачены.

обновление

история теряется, когда Subversion не знает, что это переименование, например:

  • старое имя файла aa.txt, и он переименован вручную в bb.txt
  • новое имя файла bb.txt добавляется в subversion
  • в диалоговом окне фиксации aa.txt появляется отсутствует и может быть помечен как удалены и bb.txt появляется добавил
  • в результате история потеряна,SVN показать журнал в контекстном меню будет отображаться только bb.txt

сохранить История файлов, вам нужно использовать переименовать из контекстного меню (или из командной строки). если вы уже переименовали файл:

  • старое имя файла cc.txt появится как отсутствует
  • Регистрация показать неверсированные файлы возможность увидеть новое имя файла dd.txt, который обозначен как non-versioned
  • выберите оба имени файлов и выберите ремонт move из контекстного меню, которое приводит к cc.txt обозначен как удалены и dd.txt обозначен как добавить (+)
  • после фиксации, история будет сохранена, и в журнале вы увидите как имена файлов, если убрать Остановка при копировании / переименовании.

Так, в резюме, в диалоге фиксации добавить (+) означает, что история будет сохранена, и добавил означает потерю истории. В обоих случаях старое имя файла будет отображаться как удалены.

обновление 2

когда я говорю, что история потеряна, пожалуйста, поймите, что предыдущая информация все еще существует, но она не будет присутствовать в журнале текущего имени файла, и вы должны вручную отслеживать ее (что не совсем приятно делать).


история не стирается путем переименования из контекстного меню TortoiseSVN. Если вы хотите увидеть изменения до переименования, убедитесь, что вы не используете флаг --stop-on-copy при просмотре журнала изменений:

svn log -v -r 0:N --limit 100 [--stop-on-copy] PATH
  or
svn log -v -r M:N [--stop-on-copy] PATH

см. здесь ссылка: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-cli-main.html


история файла не будет удалена. Предыдущие коммиты не будут затронуты. Однако, вы можете использовать svn move правильно переместить файл.


для файловых операций, таких как перемещение и переименование, я обычно предпочитаю использовать Браузер РЕПО TortoiseSVN, за которым следует локальное обновление SVN. Конечно, это подходит только в том случае, если вы хотите, чтобы ваша операция была сразу же передана в репозиторий.


удаление и добавление с историей-это ожидаемое событие при переименовании файла в Subversion. История не потеряна.

VisualSvn и AnkhSvn фиксируют события из Visual Studio, которые переименовываются в файл, и делают все правильно.