2009-05-12 10 views

cevap

2

Hızlı ve kirli ilk yanıtım şuydu: "Bölgelerinde dağıtılan ve sitede belgelenen Extdiff extension'a bakın." Hangisi cevabın sadece% 15'ini oluşturuyordu.

Şimdiye kadar gördüğüm en yakın cevap, rdiff adlı bir uzantı ile başlar. rdiff 'gelen' kodunu kullanır ve bu yüzden sorunuzun yarısını ele alır. Bu uzantı, earlier SO thread numaralı belgede, geçerli çalışma kopyasına (geçerli depo kopyasının tersine) bir rdiff uygulamak için bir bash betiği örneği veren belirtilmiştir. Komut, "hg diff" kullanarak biter, bu yüzden ekstdiff ayarlanmış her ne olursa olsun etkilenecektir.

rdiff.py yalnızca 146 satır ve makul ölçüde anlaşılabilir, ve bash betiği 5 satır uzunluğundadır. Sorunuza tam bir cevap olmasa da, bence yolu işaret ediyor.

+0

Lütfen yanılıyorsam düzeltin, ancak ekstdiff sadece kendi yerel değişikliklerinizle çalışır. Görünüşe göre 'gelen/giden' komutlarla kullanılamaz ... – pachanga

+0

Haklısın - Sorunu gerçekten okumadım. Bazı araştırmalar yaparken (cevap vermeden önce yapmam gereken) cevabın başlangıcını içerebilen “kancalar” gibi görünüyor. Şu anda aklınızda sorularınız için http://hgbook.red-bean.com/read/handling-repository-events-with-hooks.html adresini okuyorum. Değerli bir şey bulursam cevabımı düzenlerim. –

0

Aynı soruyu mercurial posta listesine sordum ve bazı interesting suggestions'u aldım.

1)

2) içinde -R hg" kullanan gelen değişikliklerin bir paket kaydetmek için "hg gelen --bundle in.hg" kullanın: Ben sevdim en iyisini aşağı kaynar hangi Matt Mackall geldi

[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 

Ben de posta listesine bu hatayı yayınlanmıştır ama hiçbir yanıt var: Bu maalesef bir istisna alıyorum, iyi bir fikir gibi görünse de yer değişimi

görüntülemek için .hg extdiff" şimdiye kadar ...

İlgili konular