объединение выбранных ревизий из одной ветки в другую в Mercurial - PullRequest
7 голосов
/ 02 апреля 2010

Возможно ли объединить ряд ревизий из одной ветви в другую в Mercurial?

, например

|r1
|r2
|r3
|\___
|    | r5
|    | r6
|    | r7
|    | ...
|    | r40
|r41  

Если я хочу объединить редакции 6 и 7, но не 5, в основную ветку - возможно ли это?

Такое объединение может быть тривиальным, например, если r5 измененные файлы, которые не были изменены в 6 и 7 (и поэтому его изменения, если они не нужны, можно смело игнорировать)

А как насчет нескольких выбранных диапазонов ревизий от ветви A до ветви B? например объединить 4-7, 20-25 и 30-34?

(это не реальный случай, просто иллюстрация. Я пытаюсь понять, есть ли у hg функция слияния диапазона ревизий, которая, как я знаю, у svn) *

Ответы [ 2 ]

9 голосов
/ 02 апреля 2010

Проверьте расширение трансплантата для Mercurial, я думаю, что оно будет делать именно то, что вы хотите.

https://www.mercurial -scm.org / вики / TransplantExtension

7 голосов
/ 02 апреля 2010

Простой ответ: нет .

Это противоречит духу Mercurial.

Ваш график подразумевает, что 6 зависит от 5, поэтому все, что тянет 6, должно тянуть 5, в противном случае это не имеет смысла.

Мне кажется, вы здесь неправильно поняли Mercurial. Если дерево изменений является линейным, это, как правило, признак того, что вы используете Mercurial, как если бы вы использовали CVS или SVN.

Ваше дерево изменений должно выглядеть так:

   4
  / \
 /| |\
/ | | \
5 7 23 \
| | |   25
6 8 24  |
        26

И тогда вы можете тянуть либо ветку, начинающуюся с 5, либо ветку, начинающуюся с 23.

Теперь ошибка человеческая, поэтому существует «средство», называемое экспортом, которое позволяет вам создать простой файл сравнения из одного набора изменений.

В вашем конкретном случае вы бы таким образом:

  • клонировать хранилище до r4
  • создать diff из r6 и один из r7 (экспорт)
  • применить оба (по порядку) к новому клону (импорт)
  • запускать свои юнит-тесты, пока они не пройдут
  • 1038 * совершить *
  • втянуть r41
  • 1043 * Слияние *
  • запускать свои юнит-тесты, пока они не пройдут
  • 1047 * совершить *

Если вы хотите, вы также можете пойти по дороге расширения. Есть несколько полезных расширений для управления наборами изменений. Набор образцов:

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

...