2012-06-06 3 views
4

지금까지 명확한 답변을 찾을 수 없었지만 대답은 "워크 플로 변경"일 가능성이 있습니다.어떻게 Mercurial 패치를 가져 오지 못하게합니까?

저는 Mercurial의 패치 대기열을 가지고 놀기 시작했습니다. 그리고 나는 그것에 심각한 영향력을 볼 수 있습니다. 그것은 꽤 굉장한 것처럼 보인다. 테스트 결과, repo1에 패치 대기열이 있고 repo2에서 풀 경우 몇 가지 나쁜 일을 할 수 있음을 발견했습니다. 예 :

  1. repos 1을 생성하고 복제합니다.
  2. repo2
  3. repo1 취소 신청 (팝업?) 모든 패치에 repo2
  4. repo1
  5. 풀 변경에
  6. 풀 변경을 일부 커밋 일부 패치를 확인 repo1
  7. 에 큐를 사용

이제는 특정 관점에서 의미가 다른 두 가지 가지를 볼 수 있습니다. 그러나, 내 패치가 repo1의 역사의 일부가 아니기 때문에 (최소한 패치가 적용될 때까지는), 내 패치가 오프 - 리밋 (off-limit)이라는 사실을 수은에 알리는 방법이 있어야하며, "공식적인 역사".

이 방법이 있습니까?

+0

내가 독립 실행 형을 만들 수 실현 저장소에 저장하고 복제 한 다음 내 복제본에서 대기열을 사용하지만 워크 플로에 약간의 복잡성이 추가됩니다. 또한 패치를 사용하는 다른 사람들을 얻는 것이 어려울 수도있는 것처럼 보입니다. –

+0

mq 패치의 약간 더러운 비밀은 활성 상태 ('qpush'-ed) 일 때 repo의 히스토리의 일부입니다. 로그를 확인하십시오. 'qpop'는 repo 히스토리에서 패치를 제거합니다. 그리고'qpush'-ing은 새로운 id와 비슷한 새로운 changeset를 다시 만듭니다. 그래서'mq'는 역사를 바꿉니다. 어느 것이 든'qpop -all'이 다른 repos를 잡아 당기거나 푸시하기 전에 또는'단계'접근 방식을 시도하십시오. –

답변

8

머큐리얼 phases이 이에 대한 대답 일 수 있습니다.

Mercurial v2.1부터는 으로 자동 변경되도록 mq 변경 집합을 구성 할 수 있습니다. secret 변경 집합은 incoming/pull 및명령에 의해 무시됩니다.

당신이 당신의 설정에 다음을 추가 할 필요가,이 동작을 사용하려면 다음과 같이

[mq] 
secret = True 

활성화되면, 그것은 작동 :

$ hg qpush --all 
applying my-patch 
now at: my-patch 

$ hg phase -r . 
16873: secret 

$hg outgoing 
comparing with https://www.mercurial-scm.org/repo/hg 
searching for changes 
no changes found (ignored 1 secret changesets) 
+0

아름다운! 나는 실제로 방금 오늘도 단계에 대해 알았고,이 솔루션은 완벽하게 작동했습니다. 감사합니다! –

관련 문제