Ho appena vissuto un'esperienza simile con setting Notepad++ as my external editor with msysgit1.6.2.2.
La chiave era capire che il wrapper non era uno script DOS, ma uno script/bin/sh.
Quindi, cercare di mettere nel vostro ".bat" (anche se non è esattamente uno script bat, l'estensione non è importante qui):
#!/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
Non preoccuparti di fare tutto il '\
' vai '/
': viene eseguito dagli script Git che chiamano lo strumento diff esterno.
Non l'ho provato con DiffMerge, ma con WinMerge funziona perfettamente, sia da una sessione DOS che da Git Shell.
#!/bin/sh
"C:/Program Files/WinMerge/WinMergeU.exe" -e -ub "$2" "$5" | cat
(con l'opzione '-e
', ho tipo appena ot su 'ESC
' per chiudere e uscire dallo strumento diff: che le grandi opere)
average_geek aggiunge nei commenti :
ha aggiunto l'intestazione '/bin/sh
' e ha provato a eseguire nuovamente git diff.
Questa volta l'errore è:
Unexpected parameter 'C:/Docume~/avggeek/LOCALS~1/Temp/.diff_b08444
C'è un modo per vedere quali sono i parametri passati sempre quando chiamo git diff
?
1/C'è effettivamente un modo per vedere quali sono i parametri che vengono superati!
aggiungere la seguente riga nel file 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]"'
}
Si vedrà quale editor viene chiamato, con quale parametro.
Ora, per quanto riguarda il parametro "Unexpected" parte:
ho avuto lo stesso tipo di errore quando ho chiamato WinMergeU.exe con "/e /ub
" invece di "-e -ub
", quindi prima domanda è:
Sei sicuro che il bit "/title1
" non può essere utilizzato come "-title1
" o "-t1
" o "--title1
" o "--t1
"? Questo è ciò che è possibile vedere dallo chapter 9 "Command Lines Arguments" of the pdf documentation of DiffMerge.
In caso contrario, ho il sospetto che alcune virgolette siano in ordine per delimitare correttamente i diversi parametri. Qualcosa di simile:
"/title1="Old Version"" "$2" "/title2="New Version"" "$5"
or
"/title1=\"Old Version\"" "$2" "/title2=\"New Version\"" "$5"
Ma il mio denaro sarebbe piuttosto essere sul "-title1
" o la forma "-t1
":
-t1="Old Version" "$2" -t2="New Version" "$5"
dovrebbe funzionare bene.
Ho appena completato la risposta con alcuni elementi specifici "DiffMerge", come richiesto. – VonC