Eseguo molte revisioni di codice utilizzando principalmente il comando "hg in -p/path/to/repo" e sarebbe molto bello se il suo output potesse essere visualizzato in qualche programma esterno (es. vimdiff). C'è un modo per riuscirci?Visualizzazione del risultato dei comandi Mercurial in/out nel visualizzatore esterno esterno
risposta
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.
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 ...
- 1. Scopo del parente esterno esterno sulla funzione di chiusura JavaScript
- 2. Python non funziona nel prompt dei comandi?
- 3. L'immagine all'interno di un'applicazione WPF è più piccola di quando visualizzata nel visualizzatore esterno
- 4. Esterno AndroidManifest.xml non viene visualizzato nel riquadro di visualizzazione del progetto
- 5. Invio di comandi multipli a un programma esterno
- 6. Quale è meglio ... join esterno sinistro o join esterno destro?
- 7. Oggetto esterno negli storyboard
- 8. Come incorporare OCR esterno nel PDF esistente?
- 9. Esegui comando esterno
- 10. Come aprire javadoc collegato nel browser esterno
- 11. Script Asp.Net nel file js esterno
- 12. posto javascript in html5 nel file esterno
- 13. Ansible risultato registro dei comandi multipli
- 14. Apertura dei collegamenti nel browser del dispositivo esterno con Cordova/jQuery-mobile
- 15. Geany - Come eseguire il codice nel pannello dei terminali al posto del terminale esterno
- 16. Come utilizzare Visual Studio (vsdiffmerge) come strumento di diffusione esterno in SourceTree per Mercurial?
- 17. generateUrl controller esterno
- 18. Ant include esterno .jar
- 19. iReport carattere esterno
- 20. Python: 'break' anello esterno
- 21. Apre i collegamenti nel browser esterno in WebView (WinRT)
- 22. file di assembly esterno nello studio di visualizzazione
- 23. Database esterno del motore di Google App
- 24. Sintassi del rasoio in Javascript esterno
- 25. perché usare javascript esterno?
- 26. AS3 Stop swf esterno
- 27. Symfony reindirizza all'URL esterno
- 28. CSS interno vs esterno
- 29. matrici generatrici/utilizzo esterno
- 30. collegamento esterno in C
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
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. –