Wie verwende ich Xcode 4 Mergetool eigenständig?


8

Ich muss manchmal Git-Merges auf der Konsole machen. Bisher habe ich zur Lösung von Konflikten FileMerge von Xcode 3 verwendet (Sie können es mit dem Befehl 'opendiff' auf der Konsole öffnen). Wenn Konflikte auftreten, verwende ich 'git mergetool', das automatisch opendiff für jede der in Konflikt stehenden Dateien aufruft.

Xcode 4 bietet jedoch eine viel schönere Mergetool-Komponente zur Lösung von Konflikten. Ich glaube, diese Komponente ist Teil der ausführbaren Xcode 4-Datei und nicht eigenständig. Sie können eine Vorschau der zusammengeführten Datei anzeigen und den zusammengeführten Code von Fall zu Fall direkt bearbeiten, wodurch das Zusammenführen komplexer Konflikte unglaublich schnell und zufriedenstellend wird.

Gibt es eine Möglichkeit, das Xcode 4-Mergetool zu verwenden, wenn Sie 'git mergetool' vom Terminal aus aufrufen?

Ich kann keine ausführbare Datei für dieses Tool im Xcode 4-Bundle finden. Jeder Hack, der dies erreicht, wäre willkommen.


Falls sich jemand anderes für diese Funktion interessiert: Es scheint, dass es keinen offiziellen Weg gibt, dies zu tun. Ich habe eine Funktionsanfrage über Bugreport an Apple gesendet . Hier ist das Radar . Ich denke, es ist ziemlich hoffnungslos, aber man weiß es nie. Für alle anderen Interessierten empfehle ich, Interesse zu zeigen, indem Sie einen ähnlichen Fehlerbericht an Apple senden.
Ricardo Sanchez-Saez

Antworten:


4

opendiff verwendet zwei Dateinamenargumente und einen --ancestor-Parameter mit einem dritten Dateinamen, um ein Drei-Wege-Diff zu erzeugen, und einen --merge-Parameter, um die Ausgabedatei anzugeben, die für die Konfliktlösung verwendet werden soll.

Also geh:

[mergetool "opendiff"]
    cmd = "opendiff \"$LOCAL\"  \"$REMOTE\" \"$(if test -f \"$BASE\"; then echo \"--ancestor $BASE\"; else echo \"--ancestor $LOCAL\"; fi)\" --merge=\"$MERGED\" "
[merge]
    tool = opendiff

Das sollte dazu führen, dass git opendiff als Zusammenführungswerkzeug verwendet, wenn Zusammenführungskonflikte auftreten.

Trotzdem bevorzuge ich DiffMerge von SourceGear , einem kostenlosen Diff- und Drei-Wege-Merge-Tool, das eine viel bessere, wortorientierte Konfliktlösung bietet. In der DiffMerge-Dokumentation finden Sie Informationen dazu, wie Sie git zum Standardwerkzeug für das Diffing und Zusammenführen machen können.


Vielen Dank, dass Sie versucht haben zu helfen, aber Filemerge / opendiff ist nicht das, was ich verwenden möchte. Außerdem habe ich DiffMerge (und DeltaWalker für das, was es wert ist) ausprobiert und ich mag die Benutzeroberfläche nicht sehr. Kaleidoscope ist viel schöner, aber es bietet keine Zusammenführung / Bearbeitung, nur Unterschiede.
Ricardo Sanchez-Saez

Ich bin mir ziemlich sicher, dass Xcode 4 nur FileMerge umschließt. Ich entdeckte die gleiche Enttäuschung über Kaleidoscope.
Dan Ray

Ich würde sagen, dass Xcode 4 FileMerge nicht umschließt. In FileMerge können Sie die zusammengeführte Datei nicht bearbeiten. Wählen Sie einfach aus, welche Seite der Zusammenführung Sie für jeden Konflikt verwenden möchten. Mit Xcode 4 Pull-Conflict Resolver können Sie die widersprüchlichen Zeilen bearbeiten und mit der Datei genau so ziehen, wie Sie es möchten. Außerdem unterscheidet sich die Benutzeroberfläche vollständig von Filemerge.
Ricardo Sanchez-Saez

1
Kaleidoscope 2 Beta wurde kürzlich veröffentlicht und ermöglicht die Inline-Bearbeitung von zusammengeführten Dateien. Probieren Sie es aus, es ist ziemlich gut. Das einzige, was fehlt, ist eine andere Farbe für Konflikte (es wird dieselbe Farbe als Codesubstitution für diese verwendet).
Ricardo Sanchez-Saez

Nach einigen Monaten mit Kaleidoscope und obwohl es im Allgemeinen gut ist, muss ich sagen, dass es immer noch fehlerhaft und / oder verwirrend ist, insbesondere im Vergleich zu der konfliktlösenden Xcode 4.x-Komponente. Ich hoffe immer noch, dass Apple das Unerwartete tut und es als eigenständiges Tool implementiert, das beispielsweise von Tower aus aufgerufen werden kann. ;-)
Ricardo Sanchez-Saez

0

Sie können im (sehr einfachen) Texteditor in FileMerge bearbeiten, indem Sie den Editorbereich öffnen, der standardmäßig geschlossen ist. Um den Editor in FileMerge zu öffnen, ziehen Sie den Punkt unter die mittlere Diff-Spalte nach oben, um den Editorbereich zu öffnen.


-1

Das hat bei mir funktioniert

[merge]
  tool = opendiff

[mergetool]
  keepBackup = false

[mergetool "opendiff"]
  cmd = "opendiff \"$LOCAL\" \"$REMOTE\" -merge \"$MERGED\""

2
Opendiff ist das, was Xcode 3.x für Zusammenführungen verwendet. Meine Frage betraf die Xcode 4.x-Zusammenführungskomponente, die ein völlig anderes Tool ist (sie ermöglicht im Gegensatz zu opendiff / filemerge die Inline-Bearbeitung der resultierenden Datei). Danke trotzdem.
Ricardo Sanchez-Saez
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.