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?

Foi útil?

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 script merge.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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top