Mercurial / TortoiseHG Объединение магистрали превращается в филиал - PullRequest
5 голосов
/ 30 сентября 2010

Я только что переключился с SVN, где после нескольких изменений в транке я бы слил ряд ревизий (от моего последнего слияния из транка до branhc - HEAD) в ветку. Я хочу сделать то же самое с Mercurial, используя TortoiseHG, но я не могу понять, как. Я только что зафиксировал два набора изменений в транке, теперь мне нужна ветвь, чтобы интегрировать эти изменения. Заранее спасибо!

Ответы [ 3 ]

22 голосов
/ 03 октября 2010

Я написал руководство по работе с ветками в Mercurial . Это сводится к этому:

$ hg update mybranch # unless you are already at the tip of the branch
$ hg merge default   # merge in latest changes from "trunk"
$ hg commit -m 'Merge with default'

Когда mybranch сделано, вы закрываете его и объединяете его по умолчанию:

$ hg commit --close-branch -m 'Ready for merge'
$ hg update default
$ hg merge mybranch
$ hg commit -m 'Integrated mybranch'

Крутая вещь в Mercurial заключается в том, что вы используете одни и те же команды независимо от того, в каком направлении вы объединяетесь. Система отслеживания слияний в Subversion требует, чтобы вы добавляли специальные флаги командной строки при слиянии в одном направлении, но не в другом (я не могу вспомнить, какое направление есть, не просматривая его в руководстве).

7 голосов
/ 30 сентября 2010

В hg (или любой DVCS) вы можете объединить любой набор изменений с любым другим набором изменений (кроме предков). Если вы открываете журнал репозитория из TortoiseHG (Просмотреть журнал изменений из контекстного меню Проводника или hgtk log из командной строки), вы можете обновить любой набор изменений, а затем выбрать «объединить с».

В вашем конкретном случае вы обновите заголовок ветки, а затем объединитесь с заголовком ствола.

2 голосов
/ 30 сентября 2010

Это то, что я обычно делаю:

hg up trunk #assuming trunk is your main branch
hg merge -r myawesomebranch
#party
...