Останнім часом виникає кілька запитань про пропуск змін при збереженні гілок випуску в Mercurial. Наприклад:
- Mercurial: зміни, пов'язані з галуззю, продовжують повертатися після злиття манекенів
- Чому резервні показники Меркурія в одній галузі впливають на інші гілки?
Оскільки він був представлений в 2.0, я задумався про те, graft
щоб уникнути цієї проблеми. З огляду на таке дерево перегляду:
A---B---C---D---E---F---G---H---I---J
Припустимо, нам потрібно створити гілку випуску, яка пропускає зміну Evil E
.
hg update -r D
hg graft "F::J"
даючи нам:
A---B---C---D---E---F---G---H---I---J
\
--F'--G'--H'--I'--J'
- Q1: Що тільки що сталося тут? Я можу зрозуміти, що
transplant
генерував би патчіF::J
, а потім застосував їхD
, але,graft
як кажуть, використовує 3-бічне злиття, а не патчі. Отже ....... як це працює? Чому краще?
Скажемо, я зараз виправляю E
та об’єдную це у свою гілку випуску.
--E2-----------------
/ \
A---B---C---D---E---F---G---H---I---J---M1
\ \
--F'--G'--H'--I'--J'---------M2--
М1 - пряме злиття; нічого особливого там немає. M2 - це об'єднання гілок, на яких "однакові" (або принаймні еквівалентні) зміни.
- Q2: Чи є це злиття лише звичайним тристороннім злиттям
D
,J'
іM1
? - Q3: Чи зберігала / використовувала додаткова інформація про операцію з трансплантатом, яка допомагає їй у злитті?
І, нарешті...
- Q4: Які потенційні проблеми з таким потоком?