Gitでp4mergeを使用しようとしていますが、次のようになります。
p4mergeの開始エラー: "path/myFile"は無効なファイルです(または無効なファイルを指しています)(これには、ファイルのBASE、LOCAL、REMOTE、および標準バージョンが一覧表示されます)。
Gitは競合について教えてくれ、設定されたmergetool(p4merge)を開始するかどうかを尋ねられ、上記のエラーが発生します。
追記:どのファイルでも発生します!
これが何であるか、そしてそれを修正する方法についての手がかりはありますか?
これは、Windows7で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
が存在しない場合を考慮に入れることができます。
(ファイルが2つの異なるブランチで作成されてからマージされる場合、そのファイルに共通の祖先はありません)
#!/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
スクリプトで呼び出されるため、任意の数のマージツールを切り替えることができます)$base
、$alocal
、$remote
、$result
の前後の二重引用符の使用テストしたばかりです(他のP4製品がインストールされていない場合でも、 p4mergeのみをダウンロードしてインストールする -セクションクライアント/ビジュアルマージツール-が可能です)。
上記の設定では、MSysGit1.6.3、DOSセッションまたはGitbashセッション:
それはうまくいくTM。
更新msysgit 1.7.x
Benjol コメントでの言及:
p4mergeがmsysgitによってネイティブにサポートされるようになりました。
これは、次のことができることを意味します。
git config --global merge.tool p4merge
# and I recommend
git config --global mergetool.keepBackup false