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

Используя VisualSVN и TortoiseSVN здесь.

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

Что лучший способ состоит в том, чтобы переименовать файл, не теряя историю в Подверсии?

12
задан bahrep 23 October 2013 в 11:59
поделиться

6 ответов

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

10
ответ дан 2 December 2019 в 03:54
поделиться

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

1
ответ дан 2 December 2019 в 03:54
поделиться

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

3
ответ дан 2 December 2019 в 03:54
поделиться

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

Из Документы TortoiseSVN :

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

Исправление переименований файлов

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

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

Рассмотрены многие другие случаи.

Обновление

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

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

Чтобы сохранить историю файлов , вам необходимо использовать опцию Переименовать из контекстного меню (или из командной строки). ЕСЛИ вы уже переименовали файл, тогда:

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

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

Обновление 2

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

19
ответ дан 2 December 2019 в 03:54
поделиться

Удаление и добавление с историей - это ожидаемая вещь, которая произойдет при переименовании файла в Subversion. История не теряется.

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

0
ответ дан 2 December 2019 в 03:54
поделиться

История не стирается при переименовании из контекстного меню 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

5
ответ дан 2 December 2019 в 03:54
поделиться
Другие вопросы по тегам:

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