Frage

Ich versuche zu benutzen Araxis Merge wie meine Diff / Merge-Tool für msysGit.

fand ich ein paar Ressourcen im Netz:

  • Auf der Araxis Website , erwähnen sie eine "easy" Art und Weise, aber es bedeutet, eine ausführbare Dateien (araxisgitdiff.exe und araxisgitmerge.exe), die nicht Teil meiner Distribution ist.
  • Ich fand auch einige Informationen in gitguru , aber die eigentliche Information re:. Araxis ist bestenfalls spärlich, und ich kann nichts aus, dass machen
  • Schließlich gibt es einige Informationen zu einem älteren Stackoverflow Post , aber die vorgeschlagene Methode für mich nicht funktioniert. Diese besonderen Informationen wurden auf O X ausgerichtet ich auf Windows als beste „übersetzt“, wie ich konnte, aber ohne Erfolg:

Ich habe /bin/git-diff-driver.sh

#!/bin/sh

"/c/Program Files/Araxis/Araxis Merge/compare.exe" -title1:"$1 (repo version)" -title2:"$1 " -max "$2" "$5"

und bearbeitet gitconfig

[merge]
    tool = araxismerge
[mergetool "araxismerge"]
    cmd = "/c/Program Files/Araxis/Araxis Merge/compare.exe" -3 -merge -wait $LOCAL $BASE $REMOTE $MERGED
[diff]
    external = "/bin/git-diff-driver.sh"

und das einzige Ergebnis, das ich bekommen ist:

  

$ git diff HEAD ^ HEAD
  externe diff starb, bei Powereditor / src / Notepad_plus.cpp gestoppt wird.


Edit:

Ich habe auch mit der EXE-Datei namens als "c:/Program Files/Araxis/Araxis Merge/compare.exe" versucht, wie sie durch eine der Antworten vorgeschlagen, mit dem gleichen Ergebnis.


Edit:

Ich habe festgestellt, dass es leicht eingestellt werden können, wenn Sie TortoiseGit verwenden, aber es scheint, selbst diff zu handhaben und keine Einstellungen von TortoiseGit geben einen Hinweis auf wie Araxis als Merge-Tool einzurichten, wenn diff von der aufgerufen wird, Befehlszeile.


Edit:

So ist die Frage: Ist da jemand, der erfolgreich Araxis zu diff Merge verwendet und verschmelzen Zeug mit msysGit, und wenn ja, wie Sie es tun

War es hilfreich?

Lösung

Wenn Sie ‚git diff‘ haben immer verwenden araxis Sie die Anweisungen in der Hilfe-Datei verwenden können, aber wenn Sie die Kontrolle haben wollen, verwenden ‚git diff‘ wie gewohnt von der Kommandozeile und ‚git difftool 'die Araxis GUI zu engagieren.

Versuchen Sie folgendes zu Ihrem git Config hinzugefügt ::

[difftool "araxis"]
    path = "/c/Program Files/Araxis/Araxis Merge/compare.exe"
    renames = true
    trustExitCode = true
[diff]
    tool = araxis
    stat = true
[mergetool "araxismergetool"]
    cmd = 'C:\\Program Files\\Araxis\\Araxis Merge\\araxisgitmerge.exe' "$REMOTE" "$BASE" "$PWD/$LOCAL" "$PWD/$MERGED"
    trustExitCode = false
[mergetool]
    keepBackup = false
[merge]
    tool = araxismergetool
    stat = true

Andere Tipps

Die Dokumentation bei araxis wurde aktualisiert: http: //www.araxis.com/merge/documentation-windows/integrating-with-other-applications#Git

ich die Konfiguration dort verwenden kann, ohne Änderungen gezeigt.

Recht ... Ich habe es funktioniert, mit msysgit Version 1.6.3.2.1299.gee46c unter DOS oder Git Bash, mit einer Evaluationslizenz für Araxis 2009 Merge, v2009.3713:

Der Ansatz ist es, die neuen git difftool und git mergetool , anstelle von einfachen diff .

Lassen Sie uns zunächst Setup einige Skripte für diejenigen, Vergleichen und Zusammenführen Werkzeug

C:\>git config --global diff.tool adifftool
C:\>git config --global diff.external git-difftool--helper
C:\>git config --global difftool.adifftool.cmd "difftool.sh \"$LOCAL\" \"$REMOTE\" \"$MERGED\""
C:\>git config --global difftool.prompt false

Weitere Informationen:

  • indem diff.external auf das Git-Skript git-difftool--helper, werde ich verwenden difftool auch wenn ich ‚git diff‘ wird eingeben.
  • vergessen Sie nicht $MERGED zu Ihrem difftool Skript übergeben: das ist die einzige Variable mit dem realen Namen der Datei diff'ed wird, ist. $LOCAL und $REMOTE sind temporäre Namen.

Für das Merge-Tool, würden Sie die folgenden globalen Werte gesetzt:

C:\>git config --global merge.tool amergetool
C:\>git config --global mergetool.amergetool.cmd "mergetool.sh \"$PWD/$LOCAL\" \"$PWD/$BASE\" \"$PWD/$REMOTE\" \"$PWD/$MERGED\""
C:\>git config --global mergetool.prompt false

Durch diese Tools zu einigen Shell-Skripten einstellen, können Sie Werkzeuge wechseln aus diesen Skripten.
Ein weiterer Ansatz ist Ihre Werkzeuge zu nennen (mergetool.araxis.cmd, mergetool.winmerge.cmd, ...) und das richtige Werkzeug in der diff.tool oder merge.tool-Einstellung.

Erstellen difftool.sh und mergetool.sh in einem Verzeichnis Ihres globalen Umgebungsvariable PATH verwiesen. Sie werden sogar von DOS arbeiten (und sie sind sh - Shell - Skripte)

difftool.sh

#!/bin/sh
echo Launching Araxis Merge.exe: $3
t1="'$3 (from)'"
t2="'(to)'"
"C:/Program Files/Araxis/Araxis Merge/Compare.exe" -max -nowait -2 -title1:${t1} -title2:${t2} "$1" "$2" 

Weitere Informationen:

  • Impossible -title1 zu haben: "someTitle Mit Space" ... nur Titel ohne Raum funktioniert ..., so jetzt, versuchen Sie es ohne 'titleN' Option.
    Verstanden! Sie können nicht den Titel Wert direkt an die -title Option übergeben, müssen Sie es auf eine lokale Variable setzen, mit "' '" Kombinationen zitiert (die doppelten Anführungszeichen während der Shell-Skript-Ausführung verschwinden, die einfachen Anführungszeichen zu verlassen, so dass Räume innerhalb eines Titels!)
  • $3 stellen den richtigen Namen und nicht einige temporären Dateinamen für diff Zweck. So ist der Einsatz von $3 innerhalb der title1 Option, mit Platz darin.
  • git diff HEAD^ HEAD würde in DOS-Sitzung nicht: nur git diff "HEAD^" HEAD würde
  • .

mergetool.sh

#!/bin/sh

# Passing the following parameters to mergetool:
#  local base remote merge_result

alocal=$1
base=$2
remote=$3
result=$4

t1="'$4 (current branch)'"
t2="'(common ancestor)'"
t3="'(to be merged)'"

if [ -f $base ]
then
    "C:/Program Files/Araxis/Araxis Merge/Compare.exe" -max -wait -merge -3 -a2 -title1:${t1} -title2:${t2} -title3:${t3} "$alocal" "$base" "$remote" "$result" 
else
    "C:/Program Files/Araxis/Araxis Merge/Compare.exe" -max -wait -merge -3 -a2 -title1:${t1} -title2:${t2} -title3:${t3} "$alocal" "$result" "$remote" "$result" 
fi

Ich bin nicht sicher, ob ich diese Skripte richtig funktionieren, wenn mehrere Dateien beteiligt sind (mehrere Differentiale, mehrere Dateien zusammengeführt werden).
Gerade getestet: es funktioniert, und Araxis compare.exe öffnet eine Lasche pro Datei diff oder fusionieren
. Probieren Sie es aus und lassen Sie uns wissen;)

Ich denke, dass Sie ein wenig vorsichtiger mit Flucht in Ihrem .gitconfig sein müssen.

Leider aufgrund der Art und Weise der Konfigurationsvariable erweitert und EVALED, muss die Zeichenfolge ein gültiger Shell-Befehl sein, der dann ‚git config‘ entkam.

Versuchen Sie etwas wie folgt aus:

[mergetool "araxismerge"]
    cmd = \"/c/Program Files/Araxis/Araxis Merge/compare.exe\" -3 -merge -wait \"$LOCAL\" \"$BASE\" \"$REMOTE\" \"$MERGED\"

Ja, nicht sehr hübsch, ich weiß. Es ist einer der Fälle, in denen direkt mit git config ist tatsächlich einfacher.

git config --global mergetool.araxismerge.cmd '"/c/Program Files/Araxis/Araxis Merge/compare.exe" -3 -merge -wait "$LOCAL" "$BASE" "$REMOTE" "$MERGED"'

ich mit diesem Problem zu kämpfen für eine ganze Weile, und jetzt endlich kann ich sagen, dass alle schmutzige Hacks vorgeschlagen (wie Zwischen Shell-Skripte) ist eher unnötig = D. Das Ding ist, alle aktuellen Versionen von msysGit (ich habe 1.6.4) Unterstützung Araxis Merge (Ich habe 2008) aus dem Kasten heraus. Es kommt nicht überraschend, dass intern ist es „araxis“ genannt. Also alles, was Sie brauchen, ist auf

[merge]
    tool = araxis

in Ihrem .gitconfig. Außerdem müssen Sie Araxis Ordner in Ihrer Umgebungsvariable PATH (msysGit sucht Compare.exe).

schließen

Für eine gute Maßnahme, andere Git-Einstellungen, die auf „araxis“ mergetool, dass Sie (vor allem, wenn Sie genau diesen Namen wählen passieren, wie einige Leute auf dieser Seite hat) konfiguriert haben könnten, sollten alle entfernt werden. Das schließt alles unter [mergetool "araxis"] Abschnitt. Achten Sie darauf, sie von allen configs zu entfernen (System, global, und Repository), andernfalls könnten sie mit normalen „internen Tool“ Verhalten stören.

In jedem Fall, wenn Sie daran interessiert sind, wie msysGit Ihre Araxis Merge zu starten, oder fragen, was andere mergetools es aus der Box unterstützt, sucht der Ort, an ist \share\git-gui\lib\mergetool.tcl Skript in Ihrem msysGit Installationsordner.

PS. Sie könnten in der Lage sein zu vermeiden Umgebungsvariable PATH Einstellung von mergetool.araxis.path in .gitconfig konfiguriert. Ich persönlich nie so zu tun, gestört, da

  1. Ich verwende Araxis von der Kommandozeile Merge trotzdem.
  2. Festlegen Verzeichnispfad in .gitconfig (besonders die wie "C:\Program Files\Araxis\Araxis Merge\", die Leerzeichen enthält) kann es richtig gemacht hart erweisen werden, da sie anfällig für Backslash / forwardslash Probleme ist, der Plage msysGit.

PPS. Alle oben genannten gilt Araxis Ihre difftool zu machen, auch. Das heißt, Sie müssen hinzufügen

[diff]
    tool = araxis

und alles, was in [difftool "araxis"] Abschnitt entfernen, wenn Sie es in Ihrem config (vergessen Sie nicht, PATH einzurichten, obwohl).

Sie könnten versuchen, das Skript in erwähnter folgen meine Antwort über DiffMerge (für Windows) und sehen, ob es funktioniert.

Der Pfad für ausführbare Dateien besser ausgedrückt werden könnte:

#!/bin/sh

"C:/Program Files/Araxis/Araxis Merge/compare.exe" -title1:"$1 (repo version)" -title2:"$1 " -max "$2" "$5"

Ein Weg, fand ich es zu tun „einfach“ ist TortoiseGit und Set das diff / merge-Tools in TortoiseGit Optionen.
Allerdings bedeutet dies nicht das Problem beheben, wenn Sie von der Kommandozeile diff wollen.

Seit ich zum Personalisieren git unterscheidet / Fusionen gebissen worden ist, dachte ich, ich würde versuchen, diese zu beheben für ein für allemal. Ich kam zu dem Punkt, wo AraxisMerge gestartet, aber ohne die Titel der Registerkarten. So dass für den Leser als Übung überlassen bleiben:)

Beobachtungen und Kommentare:

  • Ich habe AraxisMerge nicht, so habe ich heruntergeladen es und bekam eine kostenlose 30-Tage-Testlizenz, um es auszuprobieren mit. Diese Version (7.0 scheint es) kommt mit araxisgitdiff.exe und dem Link mit Anweisungen, die Sie Arbeiten senden. So wäre die Option # 1:. Araxis Merge Upgrade
  • Da ich von CMD.EXE gerade arbeite, 'git diff HEAD HEAD ^' funktioniert nicht. Die '^' muss 'git diff HEAD "HEAD ^"' maskiert werden.
  • Für meine eigene Arbeit, die ich kdiff3 als kostenloser Ersatz unter Windows verwenden, die einigermaßen gut funktioniert (es hilft, dass sie standardmäßig von git unterstützt wird)

mit dem git-diff-driver.sh Start gab den gleichen Fehler zu mir. nur enthalten ‚echo‘ Nachdem das Skript zu ändern, dies änderte sich nicht. So ist der Fehler unabhängig vom Inhalt des Skripts.

Dann entfernte ich den '/ ist' Teil von .gitconfig, so dass die Linie wird

external = "git-diff-driver.sh"

... und begann zu arbeiten: es die Fusion begonnen, aber es nicht entkommt den ‚(Repo)‘ Teil richtig. Zur Umgehung des Problems habe ich es ohne die Titel der Arbeit mit:

#!/bin/sh
"/c/Program Files/Araxis/Araxis Merge/compare.exe" -max "$2" "$5"

Viel Glück!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top