Потеря истории SVN для файлов во время рефакторинга - PullRequest
13 голосов
/ 16 октября 2010

Во время рефакторинга я перемещаю файлы. Очевидно, что SVN видит в этом удаление файла и создание нового, поскольку среда IDE не запускает операцию переименования / перемещения SVN. Тем не менее, я думал, что сервер SVN будет достаточно умен, чтобы обнаружить его, но это не так ... не всегда. Я использую Tortoise SVN и не нажимаю кнопку «Остановить копирование / переименование».

Это ожидается? Есть ли способ обойти это? Должен ли я перемещать файлы с помощью команд оболочки Tortoise SVN, а не позволять среде IDE регулярно перемещать файлы?

Кроме того, возможно ли принудительно заставить SVN связывать два файла как один и тот же объект, если он не знает? Как сказать "/com/john/test.tct - это то же самое, что /com/john/test/file.txt"?

Ответы [ 3 ]

25 голосов
/ 16 октября 2010

Способ SVN сделать это на самом деле - SVN переименовывает файл (svn move или использует TortoiseSVN «Rename»). Однако, если вы абсолютно должны иметь какой-либо внешний инструмент для выполнения операции переименования, вы можете использовать TortoiseSVN для восстановления операции перемещения . Далее сообщим SVN, что новый файл на самом деле переименован в старый:

  1. Открыть окно «Проверка изменений».
  2. Отметьте как старое имя файла (указано как отсутствующее), так и новое (указано как неверсионное)
  3. Щелкните правой кнопкой мыши по этому выбору и выберите «Repair Move».

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

Если вы уже потеряли историю в файле, в котором вы сильно его пропустили, вы можете воскресить старый файл (вы делаете это svn copy, вставив старую версию ревизии на прежнее место), слить в нее историю нового файла затем удалите новый файл и svn move старый файл с именем нового файла.

2 голосов
/ 16 октября 2010

Вы можете установить (бесплатную) надстройку Visual Studio AnkhSVN . Это будет отслеживать ваши переименования файлов, и вы не потеряете историю в Subversion.

Переименования файлов отслеживаются клиентом Subversion. Если вы переименовываете файлы без использования клиента Subversion (с помощью проводника Windows или обозревателя решений Visual Studio вместо TortoiseSVN или AnkhSVN), тогда Subversion не распознает операцию переименования (только операцию удаления и добавления).

Кстати: использование AnkhSVN дает вам ряд других преимуществ, таких как отображение статуса subversion файлов непосредственно в обозревателе решений.

В качестве альтернативы есть также VisualSVN , который сравним с AnkhSVN, но коммерческий.

0 голосов
/ 09 октября 2015

Черепаха по умолчанию останавливается при копировании при просмотре журналов.

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

...