2014-04-15 17 views
2

우리는 Kiln and Fogbugz를 사용하고 있습니다. Kiln은 git와 hg가 함께 작동하도록 완벽하게 계획되어 있습니다. 그러나 우리는 git 브랜치가 수은의 북마크처럼 취급되는 문제에 봉착했습니다. 변경 사항이 적용될 때까지는 우리 매장에서 이것을 포착하지 못했습니다. 이제 지점이 약간 오염되었습니다.Mercurial : 공개 변경 집합을 취소하고 새로운 공개 지사에 다시 적용 하시겠습니까?

사용자 지정 분기에 있어야하는 기본 분기에 공용 변경 집합이 있습니다. 나는 그들을 퇴출시킬 수는 있지만, 다른 공공 지부에 다시 ​​신청해야합니다. 나는 이것들이 공개적인 변화이기 때문에 rebasing에 대해 걱정하고 있습니다.

이 상황을 처리하는 가장 좋은 방법은 무엇입니까?

편집 : 나는 수은 대기열을 사용하여 변경 집합을 패치로 변환 할 수 있다고 생각했지만 변경 집합은 공개되어 있기 때문에 변경할 수 없습니다. 유사한 이유로 hg 스트립을 할 수 없습니다.

+0

의욕에 분기 힘내 가장 가까운 유사체 [북마크이다] (http://mercurial.selenic.com/wiki/Bookmarks/), 이런 일이 일어난 것은 놀라운 일이 아닙니다. 이 기사에서 "Mercurial의 책갈피 기능은 Git의 분기 방식과 유사합니다." – Chris

+3

이 모든 것을 할 수있는 * 올바른 방법을 모르지만, Mercurial이 변경 집합이 공개되어 있다고 생각할 때, 그러나 그것을 제거하는 것이 좋다는 것을 안다면 그냥'hg phase -d -f -r .. '을 사용합니다. 그들에게 초안 단계로 되돌아 가게한다. – torek

+0

나는 Mercurial이나 Kiln이 아닌 Git 전문가 만 가지고있다.하지만 나는 Git 커밋을 리베이스하는 것이 일반적으로 가능하다는 것을 지적하고 싶다 ***. 걱정거리의 주요 포인트는 오래된 커밋을 가진 사람들이 새로운 작업으로 자신의 작업을 다시 동기화하는 것이 얼마나 어려운지입니다. Git에 능숙한 소규모 팀이 있다면, 이것은 합리적인 노력으로 극복 할 수없는 장애물이 될 수 없습니다. –

답변

0

Mercurial에서는 변경 점 집합을 한 곳에서 다른 곳으로 복사 (체리 선택라고도 함)하기 위해 hg graft을 사용합니다. 버그 픽스가 우연히 잘못된 분기에서 커밋되었을 때 버그 픽스를 유지 보수 브랜치로 백 포트하기 위해 자주 사용됩니다.

는이처럼 사용

$ hg update correct-branch 
$ hg graft your-commit 

이 유사하게, MQ에 your-commit을 가져 터지는 패치를 correct-branch로 업데이트 및 패치를 밀어으로, correct-branch의 자식으로 your-commit을 다시 것입니다. 이식의 이점은 내부에서 3 방향 병합을 사용하여 훨씬 더 나은 충돌 해결을 제공한다는 것입니다. 실제로는 hg rebase이 작동하는 것과 같습니다.

+0

올바른 것으로 표시하십시오. 이 기술을 사용하여 내 문제를 해결하지는 않았지만 앞으로는 유용 할 것으로 확신합니다. –

0

torek의 의견을 본격적으로 답변하여 더 눈에 잘 띄게하고 싶습니다.

그는 변한 세트가 변경 세트가 공개되었다고 생각하면 hg phase 명령 (--force 플래그 사용)으로 상황을 복구 할 수 있습니다. 물론 당신은 그것이 가장 먼저 공유되었는지에 대해 당신이 옳다는 것을 확실히하고 싶습니다.

내가 수은 공개 같은 unpushed 분기 표시된 글리치 만났다, 이것은 qimport 함께 고정하기 쉽게 만든 (또는 스트립을 사용할 수 있었다.)