ошибка 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