Subversion не может слиться после перемещения

StackOverflow https://stackoverflow.com/questions/2064321

  •  20-09-2019
  •  | 
  •  

Вопрос

Я очень новичок в Subversion, но уже много лет использую другие системы контроля версий, такие как ClearCase.

Мой босс попросил меня исправить этот проект, чтобы его можно было создать с помощью Maven вместо Ant.Одна из важных вещей, которые я должен был сделать, - это переехать src/com Для src/main/java/com, и двигаться test/com Для src/test/java/com, что я и сделал , используя svn mv команда.Я по глупости предположил, что, поскольку я использовал команды Subversion для перемещения каталогов, эта Subversion тогда узнает, что что-то было перемещено.И когда я объединил свою ветвь с магистралью, оказалось, что это сработало.Но теперь кто-то другой только что закончил работу над веткой, которую он отколол до моей работы.Итак, мы собираемся объединить его материалы в trunk, и в основном Subversion, похоже, думает “хорошо, он внес изменения в src/com/foo/bar/baz.java, но этот каталог больше не существует, так что он не имеет значения, поэтому выбросьте его ” вместо того, что я ожидал, что было “хорошо, он внес изменения в src/com/foo/bar/baz.java, но src/com был перемещен, поэтому мне нужно объединить это в src/main/java/com/foo/bar/baz.java.

Есть ли способ заставить Subversion выполнять управление редакциями, или я собираюсь вручную объединять изменения этого парня в течение следующих двух дней?

Это было полезно?

Решение

Чтобы прямо ответить на ваш вопрос:

Есть ли способ заставить Subversion выполнять управление редакциями, или я собираюсь вручную объединять изменения этого парня в течение следующих двух дней?

Вы должны быть в состоянии сделать это немного проще для себя.

Одна вещь, которую вы можете сделать, чтобы облегчить часть боли (предполагая, что схема выглядит следующим образом)

/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

Надеюсь, это поможет вам сэкономить немного времени.

Другие советы

Это звучит как одноразовая проблема.Я полагаю, вы могли бы использовать svn diff > /to/some/file.patch (или обычный diff), чтобы сохранить его изменения в файл, затем примените его к вашей перемещенной магистрали с patch -p0 < /to/some/file.path.

Кто-нибудь пробовал это программное обеспечение? xМерге

Это плагин к SmartSVN, но, похоже, он делает свое дело.Если кто-то им пользуется, я буду благодарен, если пришлют мне отзыв о нем.

У меня просто была такая же проблема, и я решил ее с помощью мерзавец.Я не хотел объединять серверные модули с svn merge -r N:M http://server/branch/foo/test/com src/test/java/com для src/main, src/test и resources.

Поэтому я использовал git svn clone file:///some/repo -T trunk -b branches -t tags.Вот так я смог сохранить мерзавец мастер синхронно с магистраль svn и объединить его с моим ветвь git.Когда я закончил, я объединил ветвь git Для мерзавец мастер и оттуда к магистраль svn.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top