git с настройкой DiffMerge для имитации настройки Mercurials с помощью diffmerge

Мне интересно, есть ли способ настроить git и diffmerge так, чтобы при выполнении следующей команды: git difftool diffmerge всплывает и показывает вам список всех измененных файлов вместо того, чтобы циклически просматривать их через командную строку?

Я думаю, это должна быть какая-то настройка файла ~ / .gitconfig. Вот мой текущий ~ / .gitconfig:

[merge]
    tool = diffmerge
[mergetool "diffmerge"]
    cmd = /Applications/DiffMerge.app/Contents/MacOS/diffmerge --merge --result=$MERGED $LOCAL $BASE $REMOTE
[mergetool]
    keepBackup = false
[diff]
    tool = diffmerge
[difftool "diffmerge"]
    cmd = /Applications/DiffMerge.app/Contents/MacOS/diffmerge $LOCAL $REMOTE

См. Ниже способ представления DiffMerge в Mercurials (HG). Mercurial способ диффузии


person Bryan    schedule 15.08.2011    source источник
comment
Я думаю, что я ищу различия в папках, которые позволяют Mercurial и DiffMerge, а по какой-то причине git этого не делает, или я не знаю, как это настроить.   -  person Bryan    schedule 15.08.2011


Ответы (4)


В вашем .gitconfig должны быть следующие строки:

[diff]
    tool = diffmerge
[difftool "diffmerge"]
    cmd = /Applications/DiffMerge.app/Contents/MacOS/DiffMerge \"$LOCAL\" \"$REMOTE\"
person Edward Thomson    schedule 15.08.2011

По умолчанию Git не предоставляет различия в каталогах. См. Этот связанный вопрос SO:

git difftool, открыть все файлы diff немедленно, а не последовательно

Также см. Проект git diffall на GitHub, который реализует эту функцию как дополнительный скрипт.

person Tim Henigan    schedule 15.08.2011
comment
Идеально. Это именно то, что я искал. Его слишком плохой git по своей сути не обрабатывает различия в папках. - person Bryan; 23.08.2011

Обратите внимание, что теперь вы можете (git 1.7.11) каталоги diff (т.е. отображать все файлы для сравнения перед открытием difftool)

См. "git difftool, чтобы сравнить каталоги?"

Другими словами, теперь git действительно «обрабатывает различия в папках».

person VonC    schedule 18.06.2012
comment
Как это будет работать с инструментом трехстороннего слияния, таким как DiffMerge? - person Bryan; 20.06.2012
comment
@Bryan git diff и difftool относятся к двусторонним различиям (как указано в stackoverflow.com/questions/7251477/ и stackoverflow.com/questions/3635788/). Этот параметр не будет касаться mergetool, который покажет трехстороннее различие, но без использования параметра difftool (следовательно, игнорируется новый параметр difftool --dir-diff). - person VonC; 20.06.2012

Взгляните на вопрос и ответьте здесь, чтобы узнать подробности о настройке git с помощью diffmerge:

Проблема с git + DiffMerge в OS X

person Gerry    schedule 15.08.2011