Подтвердить что ты не робот

SVN-слияние перемещенных исходных кодовых файлов

Я чувствую, что у меня самый простой вариант использования в мире с SVN:

  • У меня есть файл Test.java в trunk SVN.
  • От ветвления trunk до dev-branch.
  • Перемещаю Test.java в папку com/mycompany в trunk.
  • Я меняю Test.java на dev-branch.
  • Я объединяю dev-branch в trunk.
  • Результаты конфликтов деревьев.

Почему, почему, не может SVN справиться с этим? Мы делаем что-то неправильно? Это похоже на то, что это должно быть легко, и все же каждый инженер моей компании находится в тупике.

Ищем SVN-ориентированные ответы здесь (не "переходите к git" и т.д.).

4b9b3361

Ответ 1

В SVN перемещение - это удаление и добавление. Когда вы объединились в ветке, она добавит часть вашего хода, но она не сможет удалить из-за конфликта. Теперь вам нужно разрешить конфликт вручную с помощью

  • Копирование Test.java в com/mycompany/Test.java, переписывание старого. Это разрешает конфликт с этим файлом.
  • Удалите файл Test.java из старого места. Это ручной способ сделать часть удаления набора изменений, который SVN не мог сделать, когда вы сделали слияние. Используйте команду svn delete Test.java.
  • Скажите SVN, что конфликт разрешен и ваш рабочий каталог верен с помощью svn resolve --accept working . Точка в конце для текущего каталога
  • Сообщите SVN, что конфликт файла Test.java также разрешен с помощью svn resolve --accept working Test.java

Затем вы можете зафиксировать свою объединенную версию, и вы снова синхронизированы с репозиторием.