2009-05-12 3 views

답변

2

첫 번째 대답은 "Extdiff extension, 수은과 함께 배포되고 사이트에 설명되어 있습니다."였습니다. 실제로 대답의 15 %만이 었습니다.

지금까지 본 가장 가까운 대답은 rdiff이라는 확장자로 시작됩니다. rdiff는 '들어오는'코드를 사용하므로 질문의 절반을 처리합니다. 이 확장은 earlier SO thread에서 언급되었으며, 현재 작업 사본 (현재 저장소 사본과 반대)에 대해 rdiff를 구현하는 bash 스크립트 예제를 제공합니다. 스크립트는 "hg diff"를 사용하여 끝나기 때문에, extdiff가 설정된 것에 영향을받습니다.

rdiff.py는 단지 146 줄이고 합리적으로 이해할 수 있으며 bash 스크립트는 5 줄입니다. 귀하의 질문에 대한 완전한 대답은 아니지만, 나는 그것이 포인트라고 생각합니다.

+0

내가 틀렸다면 나를 바로 잡아라. 그러나 extdiff는 당신 자신의 지역 변경으로 만 작동한다. 그것은 '들어오는/나가는'명령과 함께 사용할 수없는 것 같습니다 ... – pachanga

+0

당신 말이 맞아요 - 난 정말 당신의 질문을 읽지 않았다. 어떤 연구 (내가 대답하기 전에 했어야했는데)에서 "후크 (hooks)"는 대답의 시작을 포함 할 수 있습니다. 귀하의 질문을 염두에두고 현재 http://hgbook.red-bean.com/read/handling-repository-events-with-hooks.html을 읽고 있습니다. 나는 가치있는 것을 찾으면 내 대답을 편집 할 것입니다. –

0

저는 수은 메일 링리스트에서 같은 질문을하고 interesting suggestions을 받았습니다.

1)

2)에 -R HG "사용 들어오는 변화의 번들을 저장"HG 들어오는 --bundle in.hg "사용 : 내가 좋아하는 가장 좋은 사람은 아래로 비등하는 맷 맥콜에서 온

[email protected] $ hg -R /tmp/in.bundle extdiff 
** unknown exception encountered, details follow 
** report bug details to http://www.selenic.com/mercurial/bts 
** or [email protected] 
** Mercurial Distributed SCM (version 1.1.2) 
** Extensions loaded: alias, fetch, extdiff, graphlog, hgk, rdiff 
Traceback (most recent call last): 
File "/usr/bin/hg", line 20, in <module> 
    mercurial.dispatch.run() 
File "/var/lib/python-support/python2.6/mercurial/dispatch.py", line 
20, in run 
    sys.exit(dispatch(sys.argv[1:])) 
File "/var/lib/python-support/python2.6/mercurial/dispatch.py", line 
29, in dispatch 
    return _runcatch(u, args) 
File "/var/lib/python-support/python2.6/mercurial/dispatch.py", line 
45, in _runcatch 
    return _dispatch(ui, args) 
File "/var/lib/python-support/python2.6/mercurial/dispatch.py", line 
367, in _dispatch 
    ret = _runcommand(ui, options, cmd, d) 
File "/var/lib/python-support/python2.6/mercurial/dispatch.py", line 
416, in _runcommand 
    return checkargs() 
File "/var/lib/python-support/python2.6/mercurial/dispatch.py", line 
376, in checkargs 
    return cmdfunc() 
File "/var/lib/python-support/python2.6/mercurial/dispatch.py", line 
361, in <lambda> 
    d = lambda: util.checksignature(func)(ui, *args, **cmdoptions) 
File "/var/lib/python-support/python2.6/mercurial/util.py", line 715, in check 
    return func(*args, **kwargs) 
File "/var/lib/python-support/python2.6/hgext/extdiff.py", line 203, 
in extdiff 
    return dodiff(ui, repo, program, option, pats, opts) 
File "/var/lib/python-support/python2.6/hgext/extdiff.py", line 123, in dodiff 
    node1, node2 = cmdutil.revpair(repo, opts['rev']) 
File "/var/lib/python-support/python2.6/mercurial/cmdutil.py", line 
123, in revpair 
    return repo.dirstate.parents()[0], None 
File "/var/lib/python-support/python2.6/mercurial/bundlerepo.py", 
line 229, in __getattr__ 
    raise AttributeError(name) 
AttributeError: dirstate 

나뿐만 아니라 메일 링리스트에이 오류를 게시하지만 대답이 없어 :이 불행하게도, 나는 예외를 받고 있어요, 좋은 생각처럼 들리지만 변경을

를 볼 수 .hg extdiff " 지금까지 ...