2009-05-12 7 views

risposta

2

La mia prima risposta rapida e sporca è stata: "Vedere lo Extdiff extension, distribuito con mercurial e documentato sul proprio sito". Quale era in realtà solo circa il 15% della risposta.

La risposta più vicina che ho visto finora inizia con un interno chiamato rdiff. rdiff usa il codice 'incoming' e quindi indirizza quella metà della tua domanda. Questa estensione è stata menzionata in un earlier SO thread che fornisce un esempio di script bash per implementare un rdiff rispetto alla copia di lavoro corrente (in contrasto con la copia del repository corrente). Lo script finisce con "hg diff", quindi sarebbe influenzato da qualunque cosa abbiate impostato su extdiff.

rdiff.py è solo 146 righe e ragionevolmente comprensibile e lo script di bash è lungo 5 righe. Sebbene non sia una risposta completa alla tua domanda, penso che indichi la strada.

+0

Per favore correggimi se ho torto, ma extdiff funziona solo con le tue modifiche locali. Sembra che non possa essere usato con i comandi 'incoming/outgoing' ... – pachanga

+0

Hai ragione - non ho letto la tua domanda. Nel fare qualche ricerca (che avrei dovuto fare prima di rispondere) sembra che "ganci" possano contenere l'inizio della risposta. Attualmente sto leggendo http://hgbook.red-bean.com/read/handling-repository-events-with-hooks.html con la tua domanda in mente. Modificherò la mia risposta se trovo qualcosa che valga la pena. –

0

Ho fatto la stessa domanda nella mailing list di Mercurial e ho ricevuto un po 'di interesting suggestions. Il migliore che mi è piaciuto è venuto da Matt Mackall che si riduce a:

1) usare "hg incoming --bundle in.hg" per salvare un fascio di cambiamenti in arrivo

2) usare "hg -R in extdiff .hg" per visualizzare le modifiche

anche se questo suona come una buona idea, purtroppo, sto diventando un'eccezione:

[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 

ho postato questo errore alla mailing list come pure, ma non ho ricevuto risposte finora ...

Problemi correlati