Черепаха SVN дерево конфликтует с собой
Кто-нибудь имел опыт перемещения файла в черепахе и успешной фиксации, только для того, чтобы позже совершить другое изменение и получить информацию о конфликте деревьев, где:
- файл в исходном местоположении был удален, но в черепахе помечен как отсутствующий
- файл в новом месте есть, но помечен как уже добавленный.
(Я использую черепаху SVN, и у нас есть клиент и сервер> 1.60)
Никто другой не изменил ни каталог, ни файл (согласно журналу svn).
- Почему это происходит?
- Есть ли способ избежать этого?
- Если это произойдет, есть ли более элегантный способ решения проблемы, чем удаление всей папки и повторное обновление?
3 ответа
Звучит так, как будто вы переместили файл, используя команду "Переместить" в проводнике Windows, а не команду "Переместить" в черепахе. Первый просто перемещает файл в файловой системе, не обновляя дерево подрывной деятельности (удаляя старый файл из управления версиями и связывая историю старого файла с новой).
Всегда используйте TortoiseSVN команду "Переместить" или, если вы хотите переместить файл без истории, затем скопируйте файл с помощью проводника Windows, добавьте новую версию с помощью Tortoise, а затем удалите старую версию с помощью Tortoise.
Вы можете щелкнуть правой кнопкой мыши на родительской папке старого файла, выбрать "Проверить наличие изменений", а затем удалить файл, помеченный как отсутствующий, в системе управления версиями.
Похоже, вы зафиксировали файл, но не каталоги, в которые он был перемещен. Вы также должны зафиксировать каталоги.
Я попал в конфликт дерева, щелкнув по папке, выбрав "переименовать" и используя "newpath \ to \ folder" в качестве параметра. После многих раундов неудачных команд очистки и некоторых других вещей я наконец восстановил здравомыслие:
- открыть новый чистый заказ в другую папку
- SVN удаление и фиксация сломанного "newpath \ to \ folder" из чистой проверки
- выберите "oldpath \ folder", перетащите и нажмите svn, чтобы перейти на новое место
- немедленно зафиксировать изменение без других операций в середине
- перейдите к неработающей отметке 'oldpath \ folder' и вручную скопируйте файлы, которые были отброшены или оставлены в 'newpath \ to \ folder'
- добавить скопированные вручную файлы, как если бы они были новыми.
Цепочка бесшовной истории для обновленных вручную файлов разорвана, но, по крайней мере, я могу продолжить работу сейчас.