слияние выбранных изменений от одного ответвления по другому в Подвижном

Действительно ли возможно объединить диапазон изменений от одного ответвления до другого в Подвижном?

например.

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

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

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

Что относительно нескольких выбранного пересмотра колеблется от ответвления для ветвления B? например, объединитесь 4-7, 20-25 и 30-34?

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

7
задан Assaf Lavie 2 April 2010 в 18:17
поделиться

2 ответа

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

https://www.mercurial-scm.org/wiki/TransplantExtension

9
ответ дан 6 December 2019 в 12:47
поделиться

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

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

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

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

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

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

Затем вы можете потянуть либо ветвь, начинающуюся с 5 , либо ветвь, начинающуюся с 23 .

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

В вашем конкретном случае вы должны:

  • клонировать репозиторий до r4
  • создать разницу из r6 и одну из r7 (экспорт )
  • применить оба (по порядку) к новому клону (импорт)
  • запустить ваши модульные тесты, пока они не пройдут
  • commit
  • pull in r41
  • merge
  • запустить свой модуль тесты, пока они не пройдут
  • commit

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

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

7
ответ дан 6 December 2019 в 12:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: