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 перед объединением из магистрали.