erro p4merge [GIT]
Pergunta
Eu estou tentando usar p4merge com git mas estou recebendo:
Erro ao iniciar p4merge:. "Path / myFile" é (ou aponta para) um arquivo inválido (lista o BASE, LOCAL, REMOTO, e versão padrão do arquivo)
Git me diz sobre o conflito, então ele pergunta se eu quero começar o mergetool configurado (p4merge) e, em seguida, eu recebo o erro acima.
Nota adicional: isso acontece com qualquer arquivo
Qualquer pista sobre o que é isso e como corrigi-lo?
Solução
Isso funcionou para mim usando msysGit no windows 7:
git config --global merge.tool p4merge
git config --global mergetool.p4merge.cmd 'p4merge $BASE $LOCAL $REMOTE $MERGED'
Não sei por que, mas a citar coisas asneira para mim.
Outras dicas
Você vai aqui minha configuração para DiffMerge ou KDiff3.
Com base nisso, eu recomendaria para p4merge:
git config --global merge.tool merge
git config --global mergetool.merge.cmd "merge.sh \"$PWD/$LOCAL\" \"$PWD/$BASE\" \"$PWD/$REMOTE\" \"$PWD/$MERGED\""
e merge.sh
sendo um invólucro (copiado em um diretório referenciado por sua variável de ambiente PATH
), capaz de ter em conta o caso em que não existe BASE
.
(Quando um arquivo é criado em dois ramos diferentes sendo, em seguida, se fundiram, não haveria ancestral comum para esse arquivo)
#!/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
Você pode notar:
- o uso de
PWD
na configuração do merge - o uso de "
merge
" como nome do nome merge.tool (desde que a ferramenta real é chamado no scriptmerge.sh
, onde você pode alternar entre qualquer número de ferramenta de mesclagem que você quer) - o uso de aspas em torno
$base
,$alocal
,$remote
,$result
dentro do script - o caminho condicional para chamar a ferramenta, baseada na existência de um arquivo de "base".
- a necessidade de sempre ter 3 arquivos para mesclar como parâmetros (mesmo quando 'base' não existe ...)
Apenas testei (ao que parece, você pode instalar de download e só p4merge - seção cliente / Visual Mesclar Tool -., mesmo se você não tem qualquer outro produto P4 instalado)
Com os ajustes descritos acima, MSysGit1.6.3, sessão DOS ou sessão de festa Git:
Ele simplesmente funciona TM .
Atualização msysgit 1.7.x
Benjol menciona nos comentários:
p4merge agora é suportado nativamente pelo msysgit .
Isto significa que você pode simplesmente fazer:
git config --global merge.tool p4merge
# and I recommend
git config --global mergetool.keepBackup false