Потеря истории SVN в файлах во время рефакторинга
Во время некоторого рефакторинга я перемещаю файлы. Очевидно, SVN видит это как удаление файла и создание нового, поскольку среда IDE не запускает операцию переименования/перемещения SVN. Однако я думал, что сервер SVN будет достаточно умным, чтобы его обнаружить, но это не подтверждается... не все время. Я использую Tortoise SVN, и я снимаю флажок "stop on copy/rename".
Ожидается ли это? Есть ли способ обойти это? Должен ли я перемещать файлы с помощью команд оболочки Tortoise SVN вместо того, чтобы позволить среде IDE делать обычный файл?
Кроме того, возможно ли вручную принудительно SVN связывать два файла как один и тот же объект, если он не знает? Как сказать, "/com/john/test.tct такое же, как /com/john/test/file.txt"?
Ответы
Ответ 1
Способ SVN для этого состоит в том, чтобы SVN переименовал файл (svn move
или с помощью TortoiseSVN "Переименовать" ). Однако, если для выполнения операции переименования необходимо иметь внешний инструмент, вы можете использовать TortoiseSVN для восстановления операции перемещения. Следующее сообщит SVN, что новый файл на самом деле переименован в старый:
- Откройте окно "Проверить изменения".
- Отметьте как старое имя файла (указанное как отсутствующее), так и новое (указанное как неверсированное)
- Щелкните этот выбор правой кнопкой мыши и выберите "Восстановить движение".
Примечание. Я набираю это из памяти. Возможно, это не совсем правильно. И могут быть другие способы сделать это (например, маркировка файлов в проводнике).
Если вы уже потеряли историю в файле, где вы ее пропустили плохо, вы можете воскресить старый файл (вы делаете это с помощью svn copy
старой версии версии на прежнем месте), объедините в нее новую историю файлов, затем удалите новый файл и svn move
старый файл с новым именем файла.
Ответ 2
Вы можете установить (бесплатную) визуальную студийную надстройку AnkhSVN. Это будет отслеживать ваши переименования файлов, и вы не потеряете историю в подрывной деятельности.
Переименования файлов отслеживаются клиентом subversion. Если вы переименуете файлы без использования клиента subversion (используя проводник Windows или визуальный редактор решений для студии вместо TortoiseSVN или AnkhSVN), то subversion не будет распознавать операцию переименования (только операция удаления и добавления).
BTW: использование AnkhSVN дает вам некоторые другие преимущества, такие как отображение статуса подрывной деятельности файлов непосредственно в проводнике решений.
В качестве альтернативы там также VisualSVN, что сопоставимо с AnkhSVN, но является коммерческим.
Ответ 3
По умолчанию Tortoise останавливается при копировании при просмотре журналов.
Если вы снимете это поле в средстве просмотра журналов, вы сможете просмотреть всю историю файлов/каталогов.