Mercurial - объединение двух веток в третью новую ветку - PullRequest
5 голосов
/ 22 марта 2011

Можно ли вместо объединения одной ветви в другую существующую ветку объединить 2 ветви в третью новую ветвь?

1 Ответ

7 голосов
/ 22 марта 2011

Просто объедините ваши 2 существующие ветви и рассмотрите слияние как верхушку 3-й новой ветви, а предыдущие главы объединенных ветвей - как 1-ю и 2-ю ветви:

o    changeset:   3:92692c4a6b12
|\   bookmark:    masala
| |  summary:     merge salt and pepper
| |
| o  changeset:   2:a5f955adf03d
| |  bookmark:    pepper
| |  summary:     add some pepper
| |
o |  changeset:   1:2b56f2dc115f
|/   bookmark:    salt
|    summary:     add some salt
|
o  changeset:   0:e992ce7dd508
   summary:     initial

Здесь закладки использовались для обозначения различных линий в разработке. Поэтому, если вы хотите работать в новой 3-й ветке, обновитесь до masala, если вы хотите работать в 1-й ветке, обновите до salt и аналогично для обновления 2-й ветви до pepper, прежде чем продолжить работу и зафиксируй.

Если вы предпочитаете работать с именованными ветвями (а не с закладками), просто введите hg branch masala перед тем, как объединить ревизии 2 и 1.

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

Теперь, допустим, вы хотите продолжить работу во 2-й ветке, pepper:

$ hg up pepper
... hack ...
$ hg ci -m "need more pepper"

И затем у вас есть несколько идей для salt вещи:

$ hg up salt
... hack ...
$ hg ci -m "less salt please"

Теперь график истории показывает ваши 3 ветви более четко:

o  changeset:   5:d1f8eb72119a
|  bookmark:    salt
|  summary:     less salt please
|
| o  changeset:   4:acc9b01f584f
| |  bookmark:    pepper
| |  summary:     need more pepper
| |
+---o  changeset:   3:92692c4a6b12
| |/   bookmark:    masala
| |    summary:     merge salt and pepper
| |
| o  changeset:   2:a5f955adf03d
| |  summary:     add some pepper
| |
o |  changeset:   1:2b56f2dc115f
|/   summary:     add some salt
|
o  changeset:   0:e992ce7dd508
   summary:     initial

Альтернативой закладкам и именованным веткам является использование разных клонов для отдельных ветвей. То есть вы клонируете свое репо с неразделенными ветвями и сливаете их в клон. Какой подход лучше, зависит от вашего рабочего процесса и личных предпочтений.

...