Используя VisualSVN и TortoiseSVN здесь.
Я переименовал свой файл. Я замечаю, что это говорит, добавляют и удаляют, чтобы мне история средств может быть стерта?
Что лучший способ состоит в том, чтобы переименовать файл, не теряя историю в Подверсии?
Щелкните файл правой кнопкой мыши> TortoiseSVN> Переименовать.
Для файловых операций, таких как перемещение и переименование, я обычно предпочитаю использовать TortoiseSVN Repo Browser, за которым следует локальное обновление SVN. Конечно, это подходит только в том случае, если вы хотите, чтобы ваша операция была сразу же зафиксирована в хранилище.
История файла не будет удалена. Предыдущие коммиты не пострадают. Однако вы можете использовать svn move
, чтобы правильно переместить файл.
История не будет стерта, но вы потеряете трассировку истории, так как это могут быть два несвязанных файла.
Если вы хотите выполнить простое переименование файла или папки на месте, используйте Контекстное меню → Переименовать ... Введите новое имя для элемента, и вы все готово.
Исправление переименований файлов
Иногда ваша дружественная среда IDE будет переименовывать файлы за вас как часть упражнения по рефакторингу, и, конечно же, это не сообщает Subversion. Если вы попытаетесь зафиксировать свои изменения, Subversion увидит, что старое имя файла отсутствует, а новое - как неверсированный файл. Вы можете просто проверить новое имя файла, чтобы добавить его, но тогда вы потеряете трассировку истории, поскольку Subversion не знает, что файлы связаны.
Лучший способ - уведомить Subversion о том, что это изменение фактически является переименованием, и вы можете сделать это в диалоговых окнах «Принять» и «Проверить наличие изменений». Просто выберите старое имя (отсутствует) и новое имя (без версии) и используйте Контекстное меню → Восстановить перемещение, чтобы объединить два файла для переименования .
Рассмотрены многие другие случаи.
Обновление
История теряется, когда Subversion не знает, что это переименование, например:
Чтобы сохранить историю файлов , вам необходимо использовать опцию Переименовать из контекстного меню (или из командной строки). ЕСЛИ вы уже переименовали файл, тогда:
Итак, чтобы продолжить, в диалоговом окне фиксации добавлено (+) означает, что история будет сохранена, а добавлено означает потерю истории. В обоих случаях старое имя файла будет отображаться как удалено .
Обновление 2
Когда я говорю, что история утеряна, пожалуйста, поймите, что предыдущая информация все еще существует, но ее не будет в журнале текущего имени файла, и вы должны вручную отслеживать ее (что является не совсем приятное занятие).
Удаление и добавление с историей - это ожидаемая вещь, которая произойдет при переименовании файла в Subversion. История не теряется.
VisualSvn и AnkhSvn перехватывают события из Visual Studio о том, что файл переименовывается, и поступают правильно.
История не стирается при переименовании из контекстного меню 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