2009-04-10 2 views
13

Gitx имеет отличный просмотрщик различий, как мне сделать git автоматически pipe git diff что угодно в gitx?Как сделать git diff использовать gitx --diff на OS X

Я попытался установить мерзавец конфигурацию diff.external в сценарий оболочки, который выглядит следующим образом:

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

Однако, это только открывает все отдельные файлы на нескольких окон gitx, и это действительно мур (меняет их все на tmp-файлы с сумасшедшими именами).

У кого-нибудь есть лучшее решение?

ответ

3

Прошу прощения, это на самом деле не отвечает на ваш вопрос о gitx. Я даже не уверен, что gitx может функционировать как универсальный инструмент diff. Вам может понравиться FileMerge, инструмент merge/diff, включенный в установку Xcode. Существует сценарий под названием opendiff, который может запустить его для вас. Просто создайте скрипт со следующей строкой в ​​нем и наведите на него diff.external.

opendiff $2 $5 
+0

+1 для opendiff, но я просто использую его для просмотра diff, а не для редактирования. – claf

1

Я спросил similar question a назад. Этот ответ может вам помочь. Там есть пара вопросов, но нужно сделать открытие diff в чем-то отличном от FileMerge.

2

Я сделал это для слияния Araxis, но изменение этих основных инструкций не должно быть тяжело для того, что вы делали.

Сначала я создал ~/bin/git-diff-driver.sh и добавил разрешение на выполнение для файла.


#!/bin/sh 

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

Araxis устанавливает это инструменты интерфейса командной строки в/USR/местные/бен инструмент сравнения является их общий инструмент и Araxis * инструменты фид через сравнение.

После этого установить следующие строки должны быть добавлены к ~/.gitconfig


[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" 

Это перенаправляет все 2-х и 3-ходовые дифференциалы через Araxis слияния. Похоже, что «путь =» не нужен, но он работает.

Удачи.

18

как sigjuice говорит там. Только то, что noobs (например, я сейчас), должен знать, как «подключить» git, чтобы использовать его. Вот что я сделал

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

и теперь все «мерзавец дифф любой» должен открыть FileMerge.app ...

+5

opendiff "$ 2" "$ 5" -merge "$ 5" Работает с путями, в которых есть пробелы. ⌘-s сохраняет изменения с FileMerge обратно в локальный файл. –

+0

Как я могу отменить это изменение (если, скажем, мне надоело opendiff и я хочу вернуться к встроенному инструменту diff)? – thewillcole

+1

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

5

Я не совсем уверен, что это то, что вы хотите, но для нас на Маках он уверен, удобно в любом случае, и несколько связанных, вы можете попробовать:

$ мерзавец difftool -t opendiff #hash

Это открывает диф в программе opendiff, которую я нахожу очень полезным. Это намного проще, чем создание сценария оболочки и форсирование всех ваших различий через новый внешний diff. Если вы не находитесь на Mac, вы, вероятно, можете изменить opendiff в свой любимый инструмент diff diff ...

+0

сделать это« git difftool ... »(без тире) – plindberg

+0

Похоже, вы не можете (замените opendiff на свой любимый доступный diff tool ...), '-t mysupertool' вызывает * Неизвестный инструмент слияния 'mysupertool' * – conny

2

Я использую этот скрипт, который я назвал git-diffx и поставить на моем пути:

#!/bin/bash 

result=$(git diff [email protected]) 

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

Тогда вместо git diff ..., вы звоните git diffx ....

2

Этот вопрос может быть немного старым, но я только что нашел что-то, что работает для меня.

Открыть GitX приложение (ст.7), выберите меню "GitX", а затем "Enable Terminal Usage"

В терминале дифф трубы к gitx через:

мерзавца дифф | gitx

Смежные вопросы