Come utilizzare WinMerge come strumento Diff per Mercurial


19

Sto usando il sistema di controllo della versione distribuita di Mercurial e mi chiedo come posso configurarlo per utilizzare WinMerge invece del suo strumento diff interno. Ho già WinMerge come strumento di unione, ma voglio che Mercurial usi WinMerge quando scrivo:

hg diff

Esiste un modo per farlo o sono bloccato con lo strumento diff interno di Mercurial?

Risposte:


24

Dalle FAQ di TortoiseHg :

Aggiungi queste righe al tuo file Mercurial.ini personale

[estensioni]
extdiff =

[Extdiff]
cmd.winmerge = C: \ Programmi \ WinMerge \ WinMergeU.exe
opts.winmerge = / e / x / u / wl

Ora esegui lo strumento Impostazioni globali. Nella scheda TortoiseHg, Winmerge dovrebbe essere disponibile nell'elenco a discesa per il comando Visual Diff. Seleziona winmerge, applica, quindi chiudi.

Questo stesso approccio può essere utilizzato per aggiungere quasi tutti gli strumenti di visualizzazione visiva, ma tenere presente che lo strumento di diff deve essere in grado di supportare le differenze di directory se deve essere utilizzato da TortoiseHg, a meno che non si stia utilizzando la versione 0.8 o successive.

Joel ha anche fornito una soluzione qui nel caso in cui esegui Mercurial sotto Cygwin.

Spiegazione degli argomenti della riga di comando di WinMerge qui . Sommario:

  • /e consente di chiudere WinMerge con un singolo tasto Esc
  • /x chiude WinMerge (dopo aver visualizzato una finestra di informazioni) quando si avvia un confronto di file identici
  • /u impedisce a WinMerge di aggiungere il percorso (sinistro o destro) all'elenco MRU (Più recenti utilizzati)
  • /wl apre il lato sinistro in sola lettura

Non sto usando TortoiseHG, né sto eseguendo Mercurial sotto Cygwin. Sto usando il programma di installazione Mercurial da riga di comando predefinito da mercurial.berkwood.com . La tua soluzione ha funzionato, nel senso che sono in grado di digitare 'hg winmerge <file>' per vedere il diff tra esso e la versione precedente, ma 'hg diff <file>' fa apparire ancora lo stesso (piuttosto brutto) diff attrezzo. Tuttavia, è meglio di niente.
quantico

Penso che questa risposta presupponga che modificherete Mercurial.ini nella directory TortoiseHg (ad es. C: \ Programmi \ TortoiseHg). Se modifichi quello nella directory di Mercurial (es. C: \ Program Files \ Mercurial) allora questo non funzionerà (almeno non per me).
Ashley Davis,

anche c: \ Programmi (x86) \ WinMerge \ WinMergeU.exe
Avram

Assicurati di non inserire virgolette nel percorso di WinMerge nel file di configurazione, altrimenti non funzionerà.
Drealmer,

7

Funziona così per me: pura linea di comando mercuriale diversa dalla tartaruga

Innanzitutto, modifica il file (sotto una finestra a 64 bit)

C: \ Programmi (x86) \ Mercurial \ Mercurial.ini

[extensions]
; must uncomment this line
extdiff =

[extdiff]
; i'm using winmerge unicode version
cmd.winmerge = C:\Program Files (x86)\WinMerge\WinMergeU.exe
; it explains winmerge command line parameters here: http://winmerge.org/docs/manual/CommandLine.html
opts.winmerge = /r /e /x /u /wl

Quindi, puoi usare "hg winmerge ..." invece di "hg diff ..."


Trovo utile eseguire winmerge in background in modo da poter vedere le modifiche durante l'impostazione del messaggio di commit e anche visualizzare le statistiche su quali file sono cambiati sulla riga di comando. Per fare ciò metti un file batch nella directory mercurial che contiene start / b hg winmerge <NEWLINE> hg diff --stat
danio

3

Bene, le risposte fornite in precedenza non mi danno gli effetti desiderati. Non consentono di modificare le revisioni e di modificarle sul posto (intendo la stessa funzionalità disponibile per TortoiseSVN dalla confezione). Per fare ciò ho aggiunto in aggiunta a mercurial.ini questa sezione:

[merge-tools]
winmerge.regkey=Software\Thingamahoochie\WinMerge\
winmerge.regname=Executable
winmerge.priority=-10
winmerge.args=/e /x /wl /ub /dl other /dr local $other $local $output
winmerge.fixeol=True
winmerge.checkchanged=True
winmerge.gui=True
winmerge.diffargs=/r /e /x /ub /wl /dl '$plabel1' /dr '$clabel' $parent $child
winmerge.diff3args=
winmerge.dirdiff=True

Questo è tratto da http://blog.stevehorn.cc/blog/easy-mercurial-visual-diff-between-two.html

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.