Черепаха SVN дерево конфликтует с собой

Кто-нибудь имел опыт перемещения файла в черепахе и успешной фиксации, только для того, чтобы позже совершить другое изменение и получить информацию о конфликте деревьев, где:

  1. файл в исходном местоположении был удален, но в черепахе помечен как отсутствующий
  2. файл в новом месте есть, но помечен как уже добавленный.

(Я использую черепаху SVN, и у нас есть клиент и сервер> 1.60)

Никто другой не изменил ни каталог, ни файл (согласно журналу svn).

  1. Почему это происходит?
  2. Есть ли способ избежать этого?
  3. Если это произойдет, есть ли более элегантный способ решения проблемы, чем удаление всей папки и повторное обновление?

3 ответа

  1. Звучит так, как будто вы переместили файл, используя команду "Переместить" в проводнике Windows, а не команду "Переместить" в черепахе. Первый просто перемещает файл в файловой системе, не обновляя дерево подрывной деятельности (удаляя старый файл из управления версиями и связывая историю старого файла с новой).

  2. Всегда используйте TortoiseSVN команду "Переместить" или, если вы хотите переместить файл без истории, затем скопируйте файл с помощью проводника Windows, добавьте новую версию с помощью Tortoise, а затем удалите старую версию с помощью Tortoise.

  3. Вы можете щелкнуть правой кнопкой мыши на родительской папке старого файла, выбрать "Проверить наличие изменений", а затем удалить файл, помеченный как отсутствующий, в системе управления версиями.

Похоже, вы зафиксировали файл, но не каталоги, в которые он был перемещен. Вы также должны зафиксировать каталоги.

Я попал в конфликт дерева, щелкнув по папке, выбрав "переименовать" и используя "newpath \ to \ folder" в качестве параметра. После многих раундов неудачных команд очистки и некоторых других вещей я наконец восстановил здравомыслие:

  1. открыть новый чистый заказ в другую папку
  2. SVN удаление и фиксация сломанного "newpath \ to \ folder" из чистой проверки
  3. выберите "oldpath \ folder", перетащите и нажмите svn, чтобы перейти на новое место
  4. немедленно зафиксировать изменение без других операций в середине
  5. перейдите к неработающей отметке 'oldpath \ folder' и вручную скопируйте файлы, которые были отброшены или оставлены в 'newpath \ to \ folder'
  6. добавить скопированные вручную файлы, как если бы они были новыми.

Цепочка бесшовной истории для обновленных вручную файлов разорвана, но, по крайней мере, я могу продолжить работу сейчас.

Другие вопросы по тегам