Mercurial: как выбирать вишню во время слияния

У меня есть следующая ситуация:

У меня есть ветвь br_foo из версии 4. После этого есть еще 3 изменения, сделанные в ветке по умолчанию: 6, 7 и 8. Я бы хотел только слить изменения 7 и 8 в br_foo. Есть ли способ достичь этого в mercurial?

Спасибо,

Ответ 1

Трансплантация трансплантата

В зависимости от того, какую версию Mercurial вы используете, вы, вероятно, будете использовать либо новую Graft функциональность в Mercurial 2.x, либо старше Расширение трансплантата для более ранних версий Mercurial.


Команда Graft

Это было объявлено недавно (ноябрь 2011 г.), поэтому у меня не было возможности самостоятельно работать с ним.

Эта команда использует Mercurial merge logic для копирования отдельных изменений из других ветвей без объединения ветвей в графе истории. Это иногда называют "backporting" или "cherry-picking". От по умолчанию, графт скопирует пользователя, дату и описание из источника Изменения.


Расширение трансплантации

Я использовал его только для этого сценария. Небольшой фрагмент из описания...

Это расширение позволяет вам пересаживать патчи из другой ветки или хранилище.

Он записывает исходный идентификатор набора изменений в измененном наборе изменений, и избегает трансплантации ранее пересаженных пластырей.

Он также может использоваться для перераспределения ветки с восходящими изменениями (включая отбрасывание наборов изменений, которые были приняты вверх по течению), переписать ревизии и внести изменения в некоторые изменения.

Ответ 2

Так как mercurial 2.0 (выпущенный 1 ноября 2011 года) обрабатывается новой основной командой graft:

Эта команда использует Mercurial merge logic для копирования отдельных изменений из других ветвей без объединения ветвей в графе истории. Это иногда называют "backporting" или "cherry-picking".

См. также этот другой вопрос.