2009-04-10 10 views
13

Gitx hat eine große diff-Viewer, wie mache ich git automatisch Pipe git diff was auch immer in gitx?Wie macht man git diff verwenden gitx --diff auf OS X

Ich habe versucht git set config diff.external zu einem Shell-Skript, das wie folgt aussieht:

git diff "$2" "$5" | gitx 

jedoch, dass nur alle einzelnen Dateien in mehrere GitX Fenster öffnet sich, und es ist wirklich Verwirrungen up die Dateinamen (ändert sie alle in tmp-Dateien mit verrückten Namen).

Hat jemand eine bessere Lösung?

Antwort

3

Es tut mir leid, dass dies Ihre Frage zu gitx nicht wirklich beantwortet. Ich bin mir nicht einmal sicher, ob Gitx als generisches Diff-Tool funktionieren kann. Möglicherweise möchten Sie FileMerge, ein Merge/Diff-Tool, das in der Xcode-Installation enthalten ist. Es gibt ein Skript namens openend, das es für Sie starten kann. Machen Sie einfach ein Skript mit der folgenden Zeile darin und zeigen Sie diff.external darauf.

opendiff $2 $5 
+0

+1 für opendiff, aber ich verwende es einfach zu diff, nicht bearbeiten. – claf

1

Ich fragte einen similar question eine Weile zurück. Diese Antwort kann dir helfen. Es gibt ein paar Fragen darin, aber eine hat mit dem Öffnen einer Diff-Ansicht in etwas anderem als FileMerge zu tun.

2

Ich habe dies für Araxis Merge getan, aber die Änderung dieser grundlegenden Anweisungen sollte nicht schwer sein für was auch immer Sie interessiert Werkzeug ist.

Zuerst habe ich ~/bin/git-diff-driver.sh erstellt und der Datei Ausführungsberechtigung hinzugefügt.


#!/bin/sh 

/usr/local/bin/compare -title1:"$1 (repo version)" -title2:"$1 " -max "$2" "$5" 

Araxis installiert es Command Line Interface-Tools in/usr/local/bin Der vergleichen Werkzeug, um ihre generisches Werkzeug ist und die araxis * Werkzeuge durch Vergleichen Feed.

Sobald dies eingerichtet ist, die folgenden Zeilen zu ~/.gitconfig hinzugefügt werden müssen


[merge] 
    tool = araxismerge 
[mergetool "araxismerge"] 
    cmd = "/usr/local/bin/compare -3 -merge -wait $LOCAL $BASE $REMOTE $MERGED" 
    path = /usr/local/bin/ 
[diff] 
    external = "/Users/mark/bin/git-diff-driver.sh" 

Diese leitet alle 2-Wege und 3-Wege-diffs durch Araxis Merge. Es scheint, als ob der "Pfad =" nicht notwendig sein sollte, aber es funktioniert.

Viel Glück.

18

wie sigjuice sagt da oben. Nur diese Noobs (wie ich jetzt bin) müssen wissen, wie man git "verbindet", um es zu benutzen. Hier ist, was ich tat

echo 'opendiff $2 $5' > ~/opendiff-git.sh 
chmod a+x ~/opendiff-git.sh 
git config --global diff.external ~/opendiff-git.sh 

und jetzt alle „git diff, was“ sollte FileMerge.app öffnen ...

+5

opendiff "$ 2" "$ 5" -merge "$ 5" Funktioniert mit Pfaden, die Leerzeichen enthalten. ⌘-s speichert Änderungen von FileMerge zurück in die lokale Datei. –

+0

Wie würde ich diese Änderung rückgängig machen (wenn ich sagen würde, ich hätte genug von opendiff und wollte zurück zum Inline-Diff-Tool)? – thewillcole

+1

@the Will Cole: 'git config --global --unset diff.external' – AlcubierreDrive

5

Ich bin nicht ganz sicher, das ist, was Sie wollen, aber für uns auf Macs es sicher ist trotzdem handlich und etwas verwandten, möchten Sie vielleicht versuchen:

$ git difftool -t opendiff #hash

dass das diff im opendiff Programm öffnet, die ich sehr nützlich finden. Dies ist viel einfacher als das Erstellen eines Shell-Skripts und das Erzwingen all Ihrer Diffs durch das neue externe Diff. Wenn Sie nicht auf einem Mac sind, können Sie den Opendiff wahrscheinlich zu Ihrem bevorzugten verfügbaren Diff-Tool ändern ...

+0

machen Sie das" git difftool ... "(ohne Strich) – plindberg

+0

Sieht so aus, als könnten Sie nicht (-ändern Sie den opendiff in Ihren Favoriten verfügbar Diff-Tool ...), '-t mysupertool' verursacht * Unbekanntes Merge-Tool 'mysupertool' * – conny

2

ich dieses Skript bin mit dem ich git-diffx und legte in meinem Weg genannt haben:

#!/bin/bash 

result=$(git diff [email protected]) 

if [ "$result" ]; then 
    echo "$result" | gitx 
fi 

Dann statt git diff ..., rufen Sie git diffx ....

2

Diese Frage könnte ein wenig alt sein, aber ich habe gerade etwas gefunden, das für mich funktioniert.

öffnen GitX app (V. 7), wählen Sie "GitX" Menü dann "Enable-Terminal Nutzung"

Am Terminal Rohr diff GitX über:

git diff | gitx

Verwandte Themen