Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

От Документы TortoiseSVN:

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

Восстановление имен файлов

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

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

Многие другие случаи рассматриваются.

Обновление

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

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

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

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

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

Обновление 2

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

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