ошибка p4merge [GIT]

Я пытаюсь использовать p4merge с git, но я получаю:

ошибка запуска p4merge: "путь / myFile" является (или указывает на) недопустимый файл (здесь перечислены базовая, локальная, удаленная и стандартная версии файла).

Git говорит мне о конфликте, затем он спрашивает, хочу ли я запустить настроенный mergetool (p4merge), а затем я получаю ошибку выше.

дополнительное Примечание: это происходит с любым файлом!

любая подсказка о том, что это такое и как это исправить?

2 ответов


это сработало для меня, используя msysGit в windows 7:

git config --global merge.tool p4merge
git config --global mergetool.p4merge.cmd 'p4merge $BASE $LOCAL $REMOTE $MERGED'

Не уверен, почему, но цитирование испортило все для меня.


вы посмотреть здесь моя конфигурация для 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 переменная окружения), способная учитывать случай, когда нет .
(когда файл создается в двух разных ветвях, которые затем объединяются, для этого не будет общего предка файл)

#!/bin/sh

# Passing the following parameters to mergetool:
#  local base remote merge_result

alocal=
base=
remote=
result=

if [ -f $base ]
then
    p4merge.exe -dl "$base" "$alocal" "$remote" "$result" 
else
    p4merge.exe -dl "$result" "$alocal" "$remote" "$result" 
fi

обратите внимание:

  • использование PWD в конфигурации слияния
  • использование "merge" имя слияния.имя инструмента (поскольку фактический инструмент вызывается в merge.sh скрипт, где вы можете переключаться между любым количеством инструментов слияния, которые вы хотите)
  • использование двойных кавычек вокруг $base, $alocal, $remote, $result внутри скрипта
  • условный путь для вызова инструмента, основанный на существование "базового" файла.
  • необходимость всегда иметь 3 файла для слияния в качестве параметров (даже если "база" не существует...)

просто протестировал (оказывается, можно скачать и установить только p4merge -- раздел Client / Visual Merge Tool --, даже если у вас нет другого установленного продукта P4).

с параметрами, описанными выше, MSysGit1.6.3, сеанс DOS или сеанс Git bash:
Это просто работаетTM.


обновление msysgit 1.7.x

Benjol упоминания в комментариях:

p4merge теперь поддерживается изначально msysgit.

это означает, что вы можете просто сделать:

git config --global merge.tool p4merge
# and I recommend 
git config --global mergetool.keepBackup false