SVN Quick Merge

Я ищу сценарий очень распространенного, но забытого до самого последнего действия, слияния SVN.

В идеале он должен работать для текущего пользователя и, скажем, коммитов за последние 2 дня под вашим именем. Таким образом, в сценарии, в котором вы работали над веткой, запуск этого скрипта объединит ваши изменения в транк и запустит диалог фиксации, чтобы вы могли проверить перед фиксацией.

Наша стратегия ветвления позволяет использовать trunk-branch1-branch1.1, так что вы начнете с конца и объединитесь со стволом.

Учитывая, что у нас большое количество разработчиков, я не ищу серебряную пулю, а скорее что-то, что может облегчить процесс.

Я взглянул на команду svn (mergeinfo), но не знал, как применить фильтр "по пользователю".

Очень признателен

1 ответ

Решение

Я не очень понимаю, почему вы пытаетесь объединить пользователя. Честно говоря, кажется, ты делаешь свою жизнь намного сложнее. С одной стороны, слияние одного пользователя слияния, как это, весьма вероятно, приведет к конфликтам, что, на мой взгляд, противоречит всей цели сценариев слияния.

Но вы могли бы использовать svn mergeinfo --show-revs eligible ^/branches/mybranch ^/trunk чтобы найти обороты, подходящие для слияния обратно в транк для вашей ветки. Тогда беги svn log -r $REV на каждую ревизию и игнорируйте ревизии, которые не находятся в нужном диапазоне дат или пользователя. Затем объедините эти коммиты. Когда выйдет 1.9 mergeinfo буду иметь --xml а также --log опции. Таким образом, вы можете объединить эти два шага в одну команду и использовать XSLT для фильтрации, аналогичной ответу, который я дал: перечислить все файлы, которые были изменены ч / б с двумя ревизиями пользователем

Все, что сказал, вы должны просто использовать svn merge --reintegrate ^/branches/mybranch где ваша текущая директория является обновленной на сегодняшний день и неизмененной рабочей копией транка, которая объединит все изменения из ветки. Если вы используете 1.8, вы можете оставить --reintegrate опция, так как 1.8 определяет, является ли слияние реинтеграцией автоматически. Делать это так, чтобы минимизировать конфликты.

Если у вас есть вложенные ветви, вы должны объединиться через все ветви, чтобы добраться до ствола. Таким образом, если у вас есть ветвь с именем branch1 вне ствола и branch1.1 от branch1, то вам нужно реинтегрировать в branch1 из branch1.1 перед объединением из магистрали.

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