Может ли Mercurial объединить именованную ветку, которая не является головкой? - PullRequest
7 голосов
/ 26 октября 2009

По сути, у меня есть ветка dev, и мне нравится создавать ветку функций, пока я что-то реализую, а затем объединить ее обратно. Таким образом, возникают ситуации, подобные следующим

 a
 b
 c
 d - dev
/ 
e
f - feature

Поскольку dev не является головой, возможно ли все же использовать dev так, чтобы и dev, и feature указывали на f?

Я почти уверен, что git может сделать это прекрасно, но, похоже, не может убедить Mercurial сделать то же самое ...

Ответы [ 2 ]

19 голосов
/ 26 октября 2009

Карл Мейер прав. Ты думаешь как пользователь git, а Mercurial по-разному справляется с ситуацией.

Вы можете сделать то, что предложил Карл, и просто заставить следующий коммит быть в ветке разработчика. Лично я бы посчитал это довольно запутанным, если бы увидел это, так как в ветви dev был бы разрыв.

То, как я справлюсь с этим, - это объединить ветвь функций обратно в: hg update dev && hg merge feature && hg commit -m 'Merge in the completed feature.'

Это приведет к графу, как:

  a - dev
  b - dev
  c - dev
  d - dev
 /|  
e | - feature
f | - feature
 \|
  g - dev

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

6 голосов
/ 26 октября 2009

Именованные ветки в hg (в отличие от git) никуда не "указывают". Имена ветвей не являются подвижными псевдонимами для определенной версии. Каждый коммит имеет маркер метаданных, в котором указывается ветвь, на которой зафиксирован коммит; и все.

В этой ситуации, если у вас нет отдельных коммитов, спускающихся с «d» в ветке dev, все, что вам нужно сделать, это запустить «hg branch dev», а затем ваш следующий коммит, произошедший от «f» , вернусь на ветку Dev. Который, я думаю, достигнет результатов, которые вы ищете.

РЕДАКТИРОВАТЬ : Это сработает, но предложение Стива Лоша о фактическом слиянии приведет к более разумной истории.

...