Как настроить ExamDiff Pro в качестве внешнего инструмента слияния для SourceTree
У меня это работает как инструмент разницы со следующей настройкой:
Diff Command: C:\Program Files (x86)\ExamDiff Pro\ExamDiff.exe
Аргументы: $LOCAL $REMOTE
Если я установил аналог для настроек слияния:
Diff команда: C:\Program Files (x86)\ExamDiff Pro\ExamDiff.exe
Аргументы: /merge $REMOTE $BASE $LOCAL
Я получаю окно консоли ExamDiff, вроде как информационное окно, но не графический интерфейс, как ожидалось.
Если я создаю команду слияния вручную и запускаю ее в командной строке, это не проблема, поэтому я думаю, что это должно быть что-то, что делает SourceTree.
Если у кого-то есть такая работа и она может помочь, это будет высоко ценится!
3 ответа
Я нашел веб-страницу для общего использования ExamDiff Pro с git здесь: http://www.prestosoft.com/edp_versioncontrol.asp
От этого у меня была идея попробовать это:
Diff Command: C:/Program Files/ExamDiff Pro/ExamDiff.exe
Аргументы: //merge $REMOTE $BASE $LOCAL //o:$MERGED //dn1:Theirs //dn2:Base //dn3:Yours //dno:Output //nh
//nh
не означает отсутствие истории и не позволяет ExamDiff хранить пути репо в своей истории изменений. То же самое можно добавить к аргументам команды diff.
Работал для меня, надеюсь, это работает для вас. ура
PS: обратите внимание, что перед командой слияния есть двойная косая черта
Начиная с git 2.9 (июнь 2016 г.), вам больше не нужно будет ничего делать
git config --global merge.tool examdiff
git mergetool --tool=examdiff
Смотрите коммит 35d62bb, коммит e36d716 (25 марта 2016 г.). Автор Jacob Nisnevich ( jacobnisnevich
)
(Объединено Юнио С Хамано - gitster
- в комитете 34e859d, 13 апреля 2016 г.)
"
git mergetools
"научился водить ExamDiff.
mergetools
: добавить поддержку ExamDiff
Ответ, данный Томасом, сработал только частично для меня. Это не работает для файлов в подкаталогах. После добавления "Кавычек" вокруг имен файлов и после прочтения страницы http://www.prestosoft.com/edp_versioncontrol.asp я придумал:
Diff Command: C:/Program Files/ExamDiff Pro/ExamDiff.exe
(так же, как версия Томаса)
Аргументы: -merge "$REMOTE" "$BASE" "$LOCAL" -o:"$MERGED" -dn1:Theirs -dn2:Base -dn3:Yours -nh
Да, вы можете использовать -option
вместо /option
с ExamDiff, который весьма полезен при использовании путей к файлам в стиле Unix.
Кстати: если вы хотите использовать ExamDiff в качестве git diff-/mergetool в командной строке, вот мой конфиг, чтобы это заработало: (конфиг, указанный на приведенной выше странице, не работал!)
В окне Git Bash введите следующие команды:
git config --global diff.tool edp
git config --global difftool.edp.cmd '"C:/Program Files/ExamDiff Pro/ExamDiff.exe" "$REMOTE" "$LOCAL" -nh'
git config --global difftool.prompt false
git config --global merge.tool edp
git config --global mergetool.edp.cmd '"C:/Program Files/ExamDiff Pro/ExamDiff.exe" -merge "$REMOTE" "$BASE" "$LOCAL" -o:"$MERGED" -dn1:Theirs -dn2:Base -dn3:Yours -nh'
git config --global mergetool.edp.trustExitCode false
git config --global mergetool.prompt false
git config --global mergetool.keepBackup false
Подсказка: вам может понадобиться настроить путь к ExamDiff.exe.
Это работает для меня (SourceTree 1.6.22.0 с внешним git 2.6.1 64bit, ExamDiff Pro 6.0.3.12 64bit на Windows 8.1 Pro 64bit)
У меня есть ситуация, когда GIT вполне доволен использованием ExamDiff Pro, а Sourcetree - нет.
- Sourcetree 3.3.8
- Git 2.24.1.windows.2 (встроенный, установлен как часть Sourcetree)
- ExamDiff Pro 11.0 (бета)
Для начала я последовал совету (который уже упоминался) на http://www.prestosoft.com/edp_versioncontrol.asp
После долгих исследований выяснилось, что Sourcetree не использует глобальную конфигурацию git вC:\Users\myusername\.gitconfig
но использует другой файл вC:\Users\myusername\AppData\Local\Atlassian\SourceTree\git_local\etc\gitconfig
Это очень нелогично, потому что при открытии терминала из Sourcetree и запуске git из командной строки он использует первый файл конфигурации, но при щелчке правой кнопкой мыши и выборе "External Diff" он использует второй файл конфигурации.
Я исправил проблему, скопировав свои настройки из первого файла во второй, и теперь терминал и щелчок правой кнопкой мыши ведут себя точно так же.
В любом случае, я надеюсь, что это кому-то поможет.