Mercurial startet weiterhin FileMerge anstelle von kdiff3

1141
PVitt

Ich möchte ein paar Sachen in mercurial mit kdiff3 zusammenführen. Deshalb habe ich kdiff3 installiert und folgendes hinzugefügt ~/.hgrc:

[extdiff] cmd.kdiff3 =  [merge-tools] kdiff3.args = $base $local $other -o $output 

Aber Mercurial nennt FileMerge immer als Zusammenführungswerkzeug. Ich habe zuerst überprüft, ob kdiff3 überhaupt funktioniert. Wenn ich es vom Spotlight aus anrufe, wurde es geöffnet. Dann habe ich es von der Kommandozeile aus angerufen, um zu überprüfen, ob HG es nicht aufrufen kann, aber das hat auch funktioniert. Dann fand ich irgendwo den Hinweis, den vollständigen Pfad in .hgrc:

[extdiff] cmd.kdiff3 = /Applications/kdiff3.app/Contents/MacOS/kdiff3 

Das hat aber auch nicht geholfen. Es gibt auch keine Fehlermeldung von kdiff3, wenn Mercurial das Zusammenführungswerkzeug öffnen möchte, nur einige merkwürdige Fehler von FileMerge.

Frage ist: Warum weigert sich Mercurial, kdiff3 zu öffnen?

2
Becoz u wanna [RTFM] (https://www.selenic.com/mercurial/hgrc.5.html#ui), Alter Lazy Badger vor 8 Jahren 0
@ LazyBadger Vielen Dank für diesen höflichen und hilfreichen Kommentar. PVitt vor 8 Jahren 0

1 Antwort auf die Frage

3
PVitt

Dank des endlosen Einsatzes eines der höflichsten Benutzer hier beim Stack-Austausch konnte ich endlich feststellen, dass das mercurial-Wiki überholt zu sein scheint. Dort heißt es:

Zu ~ / .hgrc hinzufügen:

[extensions]  hgext.extdiff =  [extdiff] cmd.kdiff3 =  [merge-tools] kdiff3.args = $base $local $other -o $output 

Die extdiff-Erweiterung wird nicht benötigt, da ich hier keinen neuen hg kdiff3Befehl definieren möchte .

Mercurial hat jedoch einige weitere Einstellungen für das Zusammenführungswerkzeug:

[ui] merge = kdiff3 

In Bezug auf die Mercurial-Hilfe zu Zusammenführungswerkzeugen sollte die ui.mergeEinstellung nicht erforderlich sein, da ich speziell eine Zusammenführungswerkzeugkonfiguration festgelegt habe:

Mercurial verwendet diese Regeln bei der Entscheidung, welches Zusammenführungswerkzeug verwendet werden soll:

  1. Wenn ein Werkzeug mit der Option --tool zum Zusammenführen oder Auflösen angegeben wurde, wird es verwendet. Wenn es sich um den Namen eines Werkzeugs in der Merge-Tools-Konfiguration handelt, wird dessen Konfiguration verwendet. Andernfalls muss das angegebene Tool von der Shell ausgeführt werden.
  2. Wenn die Umgebungsvariable "HGMERGE" vorhanden ist, wird ihr Wert verwendet und muss von der Shell ausgeführt werden.
  3. Wenn der Dateiname der zusammenzuführenden Datei mit einem der Muster im Konfigurationsabschnitt für Zusammenführungsmuster übereinstimmt, wird das erste verwendbare Zusammenführungswerkzeug verwendet, das einem übereinstimmenden Muster entspricht. Hierbei werden binäre Fähigkeiten des Merge-Tools nicht berücksichtigt.
  4. Wenn ui.merge eingestellt ist, wird es als nächstes betrachtet. Wenn der Wert nicht der Name eines konfigurierten Werkzeugs ist, wird der angegebene Wert verwendet und muss von der Shell ausgeführt werden. Andernfalls wird das benannte Tool verwendet, wenn es verwendet werden kann.
  5. Wenn im Merge-Tools-Konfigurationsabschnitt verwendbare Merge-Tools vorhanden sind, wird das mit der höchsten Priorität verwendet.
  6. Wenn ein Programm mit dem Namen "hgmerge" auf dem System gefunden wird, wird es verwendet - es wird jedoch standardmäßig nicht für Symlinks und Binärdateien verwendet.
  7. Wenn die zusammenzufügende Datei nicht binär ist und kein Symlink ist, wird das interne ": merge" verwendet.
  8. Die Zusammenführung der Datei schlägt fehl und muss vor dem Festschreiben aufgelöst werden.

Ich habe irgendwie das Gefühl, dass Mercurial sein Verhalten hier (oder einen anderen Teil meines Systems) geändert hat, denn auf allen Maschinen, auf denen ich kdiff3 verwendet habe, habe ich nicht die letzte Einstellung in meiner .hgrc. Das Hinzufügen ui.mergemacht jedoch den Trick.