2013-04-19 1 views
1

이것은 내가 무슨 짓을 : Mercurial 대기열에서 하나의 특정 패치를 푸시하는 방법은 무엇입니까?

hg init 
hg qnew -m "p1" p1.patch 
; some changes 
hg qrefresh 
hg qpop 
hg qnew -m "p2" p2.patch 
; some changes 
hg qrefresh 
hg qpop 

지금 그 2 패치가 별도의 기능이었다 서로 함께 할 수 없다. 그들은 서로 독립적이어야합니다.

지금 나는 (내가 원하기 때문에 단지 1 차 기능) 할

hg qpush p1.patch 

그것은 말한다 :

applying p2.patch 
applying p1.patch 

을하고 나에게 내가 만든 두 변경 사항을 제공합니다!

내가 잘못 했나요?

특정 패치를 보내라고 말할 때도 다른 패치를 푸시합니다.

+1

또한보십시오 http://stackoverflow.com/questions/7950784/mercurial-working-with-queues-similar-to-shelves –

답변

4

한 가지만 잊었습니다. MQ 패치 세트는 (FIFO 대기열)입니다. 예를 들어, hg qseries에서 하나 이상의 패치를 볼 수 있다면, qpush | qpop는 순차적 순서가 아닌 순차적 순서로 패치 적용을 취소한다는 것을 기억해야합니다 : 아래쪽에서 위로, 역순으로 팝업

랜덤 액세스 (및 부작용으로 일련의 패치 순서 변경)는 qpush에 대해 --move 옵션입니다. 귀하의 경우에는 패치 이름이 qpush을 다시 정의 할 수 있습니다 실수를 방지하기 위해

  • hg qpop -a
  • hg qpush --move p1.patch
  • hg qpop -a
  • hg qpush --move p2.patch

((한 번에 하나씩 만 패치를 사용) 이 저장소 용) 별칭 섹션에서 항상 사용하기 위해 --move 옵션

+0

그러나, 나는 HG가 그것을 왜 이렇게하는지 보지 않는다. 순차적으로 모든 패치가 적용되는 경우 팝업의 차이점은 무엇입니까? – batman

+0

@learner - ** 모두 내 명령 집합에 ** 아닙니다. 싱글 푸시는 적용됩니다 (장난감 리포에서 테스트). 나 자신의 습관으로 인해 모두 qpop –