Вы увидите здесь мой конфиг для DiffMerge или KDiff3.
Исходя из этого, я бы порекомендовал для p4merge:
git config --global merge.tool merge
git config --global mergetool.merge.cmd "merge.sh \"$PWD/$LOCAL\" \"$PWD/$BASE\" \"$PWD/$REMOTE\" \"$PWD/$MERGED\""
и merge.sh
- оболочка (скопированная в каталог, на который ссылается ваша переменная окружения PATH
), способная учитывать случай, когда BASE
не существует.
(когда файл создается в двух разных ветвях, которые затем объединяются, у этого файла не будет общего предка)
#!/bin/sh
# Passing the following parameters to mergetool:
# local base remote merge_result
alocal=$1
base=$2
remote=$3
result=$4
if [ -f $base ]
then
p4merge.exe -dl "$base" "$alocal" "$remote" "$result"
else
p4merge.exe -dl "$result" "$alocal" "$remote" "$result"
fi
Вы можете заметить:
- использование
PWD
в конфиге слияния
- использование "
merge
" в качестве имени имени merge.tool (поскольку фактический инструмент вызывается в скрипте merge.sh
, где вы можете переключаться между любым количеством инструментов слияния, которое вы хотите)
- использование двойных кавычек вокруг
$base
, $alocal
, $remote
, $result
в скрипте
- условный путь для вызова инструмента, основанный на существовании «базового» файла.
- необходимость всегда иметь 3 файла для объединения в качестве параметров (даже если «base» не существует ...)
Только что протестировал (оказывается, вы можете скачать и установить только p4merge - раздел Client / Visual Merge Tool -, даже если у вас не установлен какой-либо другой продукт P4).
С настройками, описанными выше, MSysGit1.6.3, сеанс DOS или Git bash:
Просто работает ТМ .
Обновление msysgit 1.7.x
Бенджол упоминает в комментариях:
p4merge теперь поддерживается изначально msysgit .
Это означает, что вы можете просто сделать:
git config --global merge.tool p4merge
# and I recommend
git config --global mergetool.keepBackup false