방금 setting Notepad++ as my external editor with msysgit1.6.2.2과 비슷한 경험을했습니다.
핵심은 래퍼가 DOS 스크립트가 아니라/bin/sh 스크립트임을 깨닫는 것이 었습니다. (정확히 박쥐 스크립트 아니더라도, 확장 여기에 중요하지 않습니다)
그래서 "박쥐"에 넣어보십시오 :
#!/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
을 모두 '\
'을 만들기에 대해 걱정하지 마십시오 go '/
': 그것은 외부 diff 도구를 호출하는 Git 스크립트에 의해 수행됩니다.
DiffMerge로 테스트하지는 않았지만 WinMerge를 사용하면 DOS 세션이나 Git 쉘에서 정상적으로 작동합니다.
#!/bin/sh
"C:/Program Files/WinMerge/WinMergeU.exe" -e -ub "$2" "$5" | cat
합니다 ('
-e
'옵션을 사용하여, 나는은 diff 도구 닫고 종료합니다 '
ESC
'에 불과 하다며 유형이 있습니다! 좋은 작품)
average_geek이 코멘트에 추가 :
'/bin/sh
'헤더를 추가하고 git diff를 다시 실행 해 보았습니다.
오류가이 시간 : 내가 git diff
를 호출 할 때 매개 변수가 전달지고있는 것을 볼 수있는 방법은
Unexpected parameter 'C:/Docume~/avggeek/LOCALS~1/Temp/.diff_b08444
있습니까?
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} [email protected]"
#### END ADDITION ABOVE
eval "${GIT_EDITOR:=vi}" '"[email protected]"'
}
당신은 호출되는 것을 편집기가 나타납니다, 어떤 매개 변수. 은 "예기치 않은 매개 변수"부분에 대한 지금
:
내가 대신 "-e -ub
"의 "/e /ub
"로 WinMergeU.exe라고, 그래서 첫 번째 질문이 때이 오류의 같은 종류를 가지고 있었다 :
당신에게 확실 "/title1
"비트를 "-title1
"또는 "-t1
"또는 "--title1
"또는 "--t1
"으로 사용할 수 없습니까? 그것이 chapter 9 "Command Lines Arguments" of the pdf documentation of DiffMerge에서 볼 수있는 것입니다.
그렇지 않은 경우, 다른 매개 변수를 올바르게 구분하기 위해 일부 큰 따옴표가 사용됩니다. 같은 뭔가 :
"/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"
는 잘 작동합니다.
"DiffMerge"특정 요소를 사용하여 요청한대로 답변을 완료했습니다. – VonC