최근에 Mercurial에서 릴리스 분기를 유지할 때 변경 사항을 건너 뛰는 것에 관한 몇 가지 질문이있었습니다. 예를 들어 :Mercurial에서 그래프트 사용의 결과
- Mercurial: Branch specific changes keep coming back after dummy merge
- 가 2.0에서 소개 된 이후 Why are Mercurial backouts in one branch affecting other branches?
는, 나는이 문제를 방지하려면 graft
사용에 대한 궁금했습니다. 다음과 같이 개정 나무를 감안할 때 :
A---B---C---D---E---F---G---H---I---J
가정 해 우리가 악 변화 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--
M1은 스트레이트 병합이다. 특별한 것은 없다. M2가 "같은"(또는 적어도 동등한) 변경 사항이있는 분기를 병합합니다.
- Q2 :이 병합
D
,J'
및M1
사용하여 단지 보통의 3 방향 병합인가? - Q3 : 수은은 병합에 도움이되는 접목 수술에 대한 추가 정보를 저장/사용 했습니까?
그리고 마지막으로 ...
- Q4 :이 같은 흐름에 잠재적 인 문제가 무엇입니까?
위대한 질문, 훌륭한 답변 :). 둘 다 +1! –
Martin 감사합니다. 그건 누구도 그걸 생각해내는 꽤 펑키 한 생각입니다. 나는 아이디어를 얻었지만 일반적인 경우를 해결할 필요가있다. 나는 당신이 접목하는 노드들 사이의 경로와 상관없이 그것을 보유하고 있다고 생각하고 있습니까? –
@ Paul : 당신이 알아야 할 것은 이식편이 이식 수술보다 더 강력한 방법으로 변경 집합을 복사 할 수 있다는 것입니다. 이름 변경이 처리되고 병합 도구에서 충돌을 해결할 수 있다는 점에서 견고합니다. 이상한 병합에 관한 세부 사항은 있지만, 이식편의 일상적인 사용을 이해하는 데 필수적이지는 않습니다. :-) –