SVN не видит конфликтов между исходной папкой и перемещенной версией
У меня есть папка в транке со старой структурой каталогов, и ветвь, где несколько каталогов были сгруппированы как подпапки новой папки:
old(trunk) > root/dirA
/dirB
/dirC
new(branch) > root/dirGROUP/dirA
/dirB
/dirC
В new
каталоги были перемещены с svn move
команда.
Между старыми файлами существуют текстовые конфликты dirA
и новый dirA.
И когда я делаю svn merge --reintegrate http://url.to.the.branch
SVN просто удаляет старые dirA
, dirB
, dirC
и дает мне просто новую структуру каталогов, не замечая конфликтов между файлами старого и нового dirA
версии, как будто это были независимые каталоги. Файлы в новом dirA
были объединены с A
статус.
SVN поддерживает такие слияния по умолчанию? Если да, то получается, что я что-то пропустил
Если нет - как научить SVN замечать этот конфликт?
1 ответ
Это может помочь сейчас, у меня есть два решения для этого. Проблема, с которой вы столкнулись, может быть преодолена с помощью этого подхода.
Решение1:
Скажем, у вас есть следующие файлы
/branch/foo/src/com
/branch/foo/test/com
/trunk/src/main/java/com
/trunk/src/test/java/com
Прежде чем вы переместили src / com в src/main/java/com и test / com в src/test/java/com, вы могли бы сделать:
cd $TRUNK
svn merge -r N:M http://server/branch/foo .
Что вы могли бы сделать сейчас:
cd $TRUNK
svn merge -r N:M http://server/branch/foo/src/com src/main/java/com
svn merge -r N:M http://server/branch/foo/test/com src/test/java/com
ИЛИ что еще ты мог сделать
Решение2:
1) Сделайте svn до получения последней копии кода (в старой структуре dir)
svn up
2) копировать dir с помощью команд unix в структуре dir dir
cp -r /root/dirA /root/dirGroup/
cp -r /root/dirB /root/dirGroup/
cp -r /root/dirC /root/dirGroup/
Теперь у вас есть локальная копия по вашему желаемому пути.
3) Удалить старые файлы.
svn -d file names.
svn ci
4) Добавить новые файлы и DIRS SVN добавить DIRA SVN добавить DIRB SVN добавить DIRC SVN CI для всех трех DIR