p4merge错误[GIT]

我想用g4使用p4merge,但我得到:

启动p4merge时出错:“path / myFile”是(或指向)无效文件 (这列出了文件的BASE,LOCAL,REMOTE和标准版本)。

Git告诉我有关冲突,然后询问我是否想开始配置mergetool(p4merge),然后我得到上面的错误。

附加说明:它发生在任何文件中!

关于这是什么以及如何解决它的任何线索?


这对我在Windows 7上使用msysGit工作:

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环境变量所引用的目录中),能够考虑到不存在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.sh名称的名称(因为实际的工具在merge.sh脚本中调用,您可以在其中切换任意数量的合并工具)
  • 在脚本中围绕$base$alocal$remote$result使用双引号
  • 基于“基本”文件的存在调用工具的条件路径。
  • 需要总是有3个文件合并为参数(即使'base'不存在...)

  • 刚刚进行了测试(事实证明,即使您没有安装任何其他P4产品,您也可以只下载和安装p4merge - 部分Client / Visual Merge Tool - )。

    使用上述设置,MSysGit1.6.3,DOS会话或Git bash会话:
    它只是工作。


    更新msysgit 1.7.x

    Benjol在评论中提到:

    现在msysgit本地支持p4merge

    这意味着你可以做到:

    git config --global merge.tool p4merge
    # and I recommend 
    git config --global mergetool.keepBackup false
    
    链接地址: http://www.djcxy.com/p/41955.html

    上一篇: p4merge error [GIT]

    下一篇: How do I view 'git diff' output with my preferred diff tool/ viewer?