2011-02-11 3 views
1

나는 Mercurial 대기열을 배우려고하고 있는데 "hg q *"명령과 "--mq"매개 변수가있는 많은 정상적인 hg 명령이 둘다 혼란 스럽다. 필자는 --mq 매개 변수가 q * 명령 중 일부를 대체하기위한 것이라고 생각하지만 확실하지 않습니다. (새로운?) 선호하는 방법에 대한 설명서 또는 설명서가없는 것 같습니다.Mercurial 명령과 --mq 매개 변수가 같은 Mercurial 대기열 관련 명령입니까?

답변

4

--mq 옵션은 인수로 저장소를 가지고 모든 명령에 영향을 미치는 - 실제로 $(hg root)/.hg/patches로 대상 REPO을 변경, 그래서 이런 어떤 수은 명령 실행으로 효과적으로 동일합니다 : Resultingly

hg --repository $(hg root)/.hg/patches .... 

-R/--repository 옵션이있는 모든 명령에는 --mq 옵션이 있으며이를 가져 오려면 수정하지 않아도됩니다. 이전에 mercurial에서 사용한 명령 : commit, push, pull, summary, id 등은 --mq이 될 수 있습니다. 여기에 관련 파이썬 코드는 다음과 같습니다

def mqcommand(orig, ui, repo, *args, **kwargs): 
    """Add --mq option to operate on patch repository instead of main""" 

    # some commands do not like getting unknown options 
    mq = kwargs.pop('mq', None) 

    if not mq: 
     return orig(ui, repo, *args, **kwargs) 

    q = repo.mq 
    r = q.qrepo() 
    if not r: 
     raise util.Abort(_('no queue repository')) 
    return orig(r.ui, r, *args, **kwargs) 
+0

일반적으로 --mq 옵션은 내 패치를 버전화할 때만 사용됩니까? 정말로 q * 명령을 대체하지는 않습니다 (어쩌면 qinit 제외)? –

+0

수정. 당신이 대기열에 버전이 없다면 (그러나 그것들은 모두 있어야합니다!) --mq 옵션을 사용하여 푸시, 풀, 커밋, 복제, 요약 등은 패치 대기열 저장소가 없다는 메시지를 종료합니다. –

1

hg help mq에서 사라질 수 있도록 --mq 플래그가 불필요한 사용되지 표시 한 할 것을 명령한다. 이것은 qcommitqinit이 오래 나타나지 않는 이유입니다.

호기심이 있다면 명령에 대한 도움말을 보려면 여전히 hg qcommit을 수행 할 수 있습니다.

개인적으로 나는 --mq 플래그가 마음에 들지 않습니다. 대신 내가 쉘 별명 사용

mq='hg -R $(hg root)/.hg/patches' 

을하고 내가 할 수있는 mq status, mq commit, mq push 등 나는 내가 작업을 생각하는 방법을 hgmq 명령 이름 사이의 구분이 일치하는 것을 찾을 수 있습니다. 이 간단한 별칭은 여러 개의 대기열을 고려하지 않으므로 hg qqueue을 사용하는 경우 약간 확장해야합니다.