So verwenden Sie WinMerge als Vergleichstool für Mercurial

12083
quanticle

Ich verwende das verteilte Versionskontrollsystem von Mercurial und frage mich, wie ich es konfigurieren kann, um WinMerge anstelle eines eigenen internen Vergleichstools zu verwenden. Ich habe bereits WinMerge als Merge-Tool, aber ich möchte, dass Mercurial WinMerge verwendet, wenn ich Folgendes eingebe:

hg diff 

Gibt es eine Möglichkeit, dies zu tun, oder bleibe ich bei Mercurials internem Diff-Tool?

19

3 Antworten auf die Frage

23
cschol

Aus den TortoiseHg-FAQs :

Fügen Sie diese Zeilen Ihrer persönlichen Mercurial.ini-Datei hinzu

[Erweiterungen] extdiff =  [extdiff] cmd.winmerge = C: \ Programme \ WinMerge \ WinMergeU.exe opts.winmerge = / e / x / u / wl 

Führen Sie nun das Tool Globale Einstellungen aus. Auf der Registerkarte TortoiseHg sollte winmerge in der Dropdown-Liste für den Befehl "Visual Diff" angezeigt werden. Wählen Sie winmerge aus, übernehmen Sie und schließen Sie dann.

Mit diesem Ansatz können Sie nahezu jedes visuelle Diff-Tool hinzufügen. Beachten Sie jedoch, dass Ihr Diff-Tool Verzeichnis-Diffs unterstützen muss, wenn es von TortoiseHg verwendet wird, es sei denn, Sie verwenden Release 0.8 oder höher.

Joel stellte auch eine Lösung hier, falls Sie Mercurial unter Cygwin laufen.

Erklärung der WinMerge-Befehlszeilen hier . Zusammenfassung:

  • /e ermöglicht das Schließen von WinMerge mit einem einzigen Tastendruck auf die Esc-Taste
  • /x schließt WinMerge (nachdem ein Informationsdialogfeld angezeigt wurde), wenn Sie einen Vergleich identischer Dateien starten
  • /u verhindert, dass WinMerge einen Pfad (links oder rechts) zur Liste der zuletzt verwendeten Geräte (MRU) hinzufügt
  • /wl öffnet die linke Seite als schreibgeschützt
Ich verwende weder TortoiseHG, noch betreibe ich Mercurial unter Cygwin. Ich verwende das Standardbefehlszeilen-Installationsprogramm von Mercurial von http://mercurial.berkwood.com. Ihre Lösung hat funktioniert, in dem Sinne, dass ich 'hg winmerge' eingeben kann'Um den Unterschied zwischen ihm und der vorherigen Version zu sehen, aber' hg diff 'bringt immer noch dasselbe (ziemlich hässliche) Diff-Tool auf. Trotzdem ist es besser als nichts. quanticle vor 14 Jahren 0
Ich denke, diese Antwort setzt voraus, dass Sie Mercurial.ini im TortoiseHg-Verzeichnis bearbeiten (zB C: \ Program Files \ TortoiseHg). Wenn Sie das Verzeichnis im Mercurial-Verzeichnis bearbeiten (z. B. C: \ Programme \ Mercurial), funktioniert dies nicht (zumindest nicht für mich). Ashley Davis vor 14 Jahren 0
auch c: \ Programme (x86) \ WinMerge \ WinMergeU.exe Avram vor 11 Jahren 0
Stellen Sie sicher, dass Sie den Pfad zu WinMerge nicht in der Konfigurationsdatei in Anführungszeichen setzen, sonst funktioniert es nicht. Drealmer vor 6 Jahren 0
7
renfeng

So funktioniert es für mich - eine reine Befehlszeile, die nicht nur Tortoisehg ist

Bearbeiten Sie zuerst die Datei (unter einem 64-Bit-Fenster)

C: \ Programme (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 

Dann können Sie "hg winmerge ..." anstelle von "hg diff ..." verwenden.

Ich finde es nützlich, winmerge im Hintergrund auszuführen, damit ich beim Festlegen der Festschreibungsnachricht Änderungen betrachten und Statistiken darüber anzeigen kann, welche Dateien in der Befehlszeile geändert wurden. Legen Sie dazu eine Batchdatei in das mercurial-Verzeichnis ab, die start / b hg winmerge enthält hg diff --stat danio vor 13 Jahren 0
3
alehro

Well, the answers given earlier doesn't give me desired effects. They doesn't allow to make revisions diff and in place edit(I mean the same functionality which is available for TortoiseSVN from the box). To do that I've added additionally to mercurial.ini this section:

[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 

This is taken from http://blog.stevehorn.cc/blog/easy-mercurial-visual-diff-between-two.html