私は、msysgit1.6.2.2を使用した外部エディターとしてNotepad++を設定することで多少似た経験をしました。
重要なのは、ラッパーがDOSスクリプトではなく、/ bin/shスクリプトであることを理解することでした。
したがって、「。bat」を挿入してみてください(正確にはバットスクリプトではありませんが、ここでは拡張子は重要ではありません)。
#!/bin/sh
# diff is called by git with 7 parameters:
# path old-file old-hex old-mode new-file new-hex new-mode
"C:/Programs/SourceGear/DiffMerge/DiffMerge.exe" /title1="Old Version" "$2" /title2="New Version" "$5" | cat
\
すべての' 'を''にすることを心配する必要はありません/
。これは、外部のdiffツールを呼び出すGitスクリプトによって実行されます。
私はDiffMergeでテストしませんでしたが、WinMergeを使用すると、DOSセッションまたはGitシェルの両方から問題なく動作します。
#!/bin/sh
"C:/Program Files/WinMerge/WinMergeU.exe" -e -ub "$2" "$5" | cat
(' -e
'オプションを使用すると、''を入力するだけESC
でdiffツールを閉じて終了できます。これはうまく機能します!)
average_geekはコメントに追加します:
''ヘッダーを追加し、/bin/sh
gitdiffの実行を再試行しました。
今回のエラーは次のとおりです。
Unexpected parameter 'C:/Docume~/avggeek/LOCALS~1/Temp/.diff_b08444
呼び出したときに渡されるパラメーターを確認する方法はありますgit diff
か?
1 /実際に渡されるパラメータを確認する方法があります!ファイル
に次の行を追加します。C:\Program Files\Git\libexec\git-core\git-sh-setup
git_editor() {
: "${GIT_EDITOR:=$(git config core.editor)}"
: "${GIT_EDITOR:=${VISUAL:-${EDITOR}}}"
case "$GIT_EDITOR,$TERM" in
,dumb)
echo >&2 "No editor specified in GIT_EDITOR, core.editor, VISUAL,"
echo >&2 "or EDITOR. Tried to fall back to vi but terminal is dumb."
echo >&2 "Please set one of these variables to an appropriate"
echo >&2 "editor or run $0 with options that will not cause an"
echo >&2 "editor to be invoked (e.g., -m or -F for git-commit)."
exit 1
;;
esac
#### ADD THIS LINE BELOW
echo >&2 "editor is ${GIT_EDITOR:=vi} $@."
#### END ADDITION ABOVE
eval "${GIT_EDITOR:=vi}" '"$@"'
}
どのエディターがどのパラメーターで呼び出されているかがわかります。
さて、「予期しないパラメータ」の部分に関して: WinMergeU.exeを「 」の代わりに「」で
呼び出したときに同じ種類のエラーが発生したので、最初の質問は次のとおり
です。「」ビットを次のように使用できませんでしたか? " "または" "または" "または" "?これは、DiffMergeのPDFドキュメントの第9章「コマンドライン引数」からわかることです。
そうでない場合は、さまざまなパラメーターを適切に区切るために、いくつかの二重引用符が必要であると思われます。何かのようなもの:/e /ub
-e -ub
/title1
-title1
-t1
--title1
--t1
"/title1="Old Version"" "$2" "/title2="New Version"" "$5"
or
"/title1=\"Old Version\"" "$2" "/title2=\"New Version\"" "$5"
しかし、私のお金はむしろ「-title1
」または「-t1
」の形式になります。
-t1="Old Version" "$2" -t2="New Version" "$5"
正常に動作するはずです。