2009-08-20 5 views

Antwort

27

Wie in den hg wiki beschrieben, das für mich mit verschiedenen Versionen von hg gearbeitet hat:

  • ein Skript irgendwo erstellen in Ihrem $PATH, sagen in /usr/local/bin:
$ vim /usr/local/bin/opendiff-w 

#!/bin/sh 
# opendiff returns immediately, without waiting for FileMerge to exit. 
# Piping the output makes opendiff wait for FileMerge. 
opendiff "[email protected]" | cat 
  • Fügen Sie die folgenden Abschnitte, um Ihre ~/.hgrc:
[extdiff] 
cmd.interdiff = hg-interdiff 
cmd.opendiff = opendiff-w 

[merge-tools] 
filemerge.executable = opendiff-w 
filemerge.args = $local $other -ancestor $base -merge $output 

[extensions] 
extdiff = 

Jetzt können Sie es als $hg opendiff verwenden.

+9

** Für andere **:' opendiff-w' ist die Skriptdatei, die am Ende in der verwiesen wird. hgrc-Datei (das war mir nicht zu offensichtlich). Der erste Codeblock ist der Inhalt. Außerdem änderten die Berechtigungen zum Hinzufügen execute 'chmod + x opendiff-w' –

+4

** Für andere: ** Etwas, das für mich nicht offensichtlich war: Sie müssen nun' $ hg opendiff' ausführen (um die Ausgabe in 'FileMerge zu sehen '); '$ hg diff' zeigt Ihnen immer noch die Ausgabe in der Befehlszeile –

+5

** Für andere: ** ... und Sie müssen die extdiff-Erweiterung aktivieren in' ~/.hgrc' –

2

Update: Das Mercurial-Wiki hat eine page about FileMerge. Lies das zuerst.

Ich habe nicht versucht, FileMerge zu verwenden, aber eine allgemeine Übersicht könnte helfen. Das meiste, was Sie wissen wollen, ist auf der Seite MergeProgram des Mercurial-Wiki beschrieben. Die kurze Version ist Ihre typische Auswahl:

Setzen Sie die Umgebungsvariable HGMERGE so, dass sie auf das gewünschte Merge-Tool zeigt.

oder fügen Sie folgendes zu Ihrem .hgrc:

[ui] 
merge = /path/to/toolname 

[merge-tools] 
toolname.args = $base $local $other 

Der Schlüssel ist, dass ein Merge-Tool drei Argumente nehmen muss: die Basisrevision, lokale Änderungen und die Änderungen aus dem anderen Zweig. Sie verwenden die erste Konfiguration, um das Werkzeug anzugeben, und die zweite, um festzulegen, wie Argumente verwendet werden.

0

Ich habe es nicht versucht, aber ich wette, Sie müssen den ganzen Weg auf die ausführbare Datei von FileMerge zeigen, nicht nur das App-Bundle.

So:

[ui] 
merge = /Developer/Applications/Utilities/FileMerge.app/Contents/MacOS/FileMerge 
+0

Ich habe es versucht, es ist nicht so einfach. –

+0

Ich habe es auch versucht, ich habe: 'FileMerge [51550: 30f] Konnte keine Verbindung für root erstellen – jammon

1

Keine der verknüpften Dokumentation funktionierte für mich ohne Änderungen; schließlich, was ich am Ende getan habe, war eine Kombination von the official instructions und "Using Vim als das Filemerge-Programm" von https://www.mercurial-scm.org/wiki/TipsAndTricks. Ich habe die opendiff-w-Skript in this answer beschrieben (obwohl ich es hgvdiff genannt), und setzen Sie die folgenden in meinem .hgrc:

[extdiff] 
cmd.interdiff = hg-interdiff 
cmd.opendiff = /usr/local/bin/hgvdiff 

[merge-patterns] 
** = filemerge 

[merge-tools] 
filemerge.executable = /usr/local/bin/hgvdiff 
filemerge.args = $local $other -ancestor $base -merge $output 
filemerge.checkchanged = true 
filemerge.gui = true 

[extensions] 
extdiff = 

Dies ist einigermaßen funktioniert, obwohl es manchmal die Prüfung für ausführt, ob eine Datei war vorzeitig geändert, was zu einer Reihe von:

output file wwwroot/zoomingo/website/protected/messages/en/z.php appears unchanged 
was merge successful (yn)? n 

, wenn Sie FileMerge schließen.

0

Hier ist, wie ich es fest:

Erstellt /usr/local/bin/opendiff-w gefüllt mit:

#!/bin/sh 
# opendiff returns immediately, without waiting for FileMerge to exit. 
# Piping the output makes opendiff wait for FileMerge. 
opendiff "[email protected]" | cat 

lief dann den Befehl: sudo chmod +x /usr/local/bin/opendiff-w

Dann bearbeitet ~/.hgrc mit folgendem Zusatz:

[extdiff] 
cmd.interdiff = hg-interdiff 
cmd.opendiff = opendiff-w 

[merge-tools] 
filemerge.executable = /usr/local/bin/opendiff-w 
filemerge.args = $local $other -ancestor $base -merge $output 

[extensions] 
extdiff = 

Dann lief ich die folgenden Befehl ng zu überprüfen, ob es funktioniert: hg opendiff

jedoch bekam ich folgende Fehlermeldung:

exception raised trying to run FileMerge: launch path not accessible 

Um es zu beheben ich den folgenden Befehl lautete:

sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer/ 

Dies sollte jetzt arbeiten und öffne FileMerge.

============================================== ====================

Wenn Sie TorsoiseHg für Mac verwenden, ist das einzige, was Sie jetzt tun müssen, um mit FileMerge zu arbeiten Wählen Sie aus dem Dialogfeld "Konflikte lösen" die Option "Zusammenfassen" aus den Tools "Zusammengeführt/Vergleichen", und klicken Sie auf "Werkzeug auflösen".

enter image description here

Hoffnung, das hilft.