Acabo de experimentar una experiencia similar con setting Notepad++ as my external editor with msysgit1.6.2.2.
La clave era darse cuenta de que el contenedor no era un script DOS, sino un script/bin/sh.
Así que trate de poner en su ".bat" (a pesar de que no es exactamente un guión murciélago, la extensión no es importante en este caso):
#!/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
No se preocupe por lo que todos los '\
' vaya '/
': se realiza mediante los scripts de Git llamando a la herramienta externa diff.
No lo probé con DiffMerge, pero con WinMerge, funciona bien, tanto desde una sesión de DOS como desde un Git Shell.
#!/bin/sh
"C:/Program Files/WinMerge/WinMergeU.exe" -e -ub "$2" "$5" | cat
(con la opción '-e
', que tienen tipo que acaba de OT en 'ESC
' para cerrar y salir de la herramienta de diferencias: que funciona muy bien)
average_geek añade en los comentarios :
agregó el encabezado '/bin/sh
' e intentó ejecutar git diff nuevamente.
Esta vez el error es:
Unexpected parameter 'C:/Docume~/avggeek/LOCALS~1/Temp/.diff_b08444
¿Hay una manera de ver cuáles son los parámetros conseguir pasar cuando llamo git diff
?
1/En realidad, hay una manera de ver lo que están consiguiendo que pasaban los parámetros!
añadir la siguiente línea en el archivo 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]"'
}
Usted verá lo que el editor está siendo llamado, con lo que el parámetro.
Ahora, en relación con el parámetro "inesperado" parte:
Yo tenía el mismo tipo de error cuando llamé WinMergeU.exe con "/e /ub
" en lugar de "-e -ub
", por lo que la primera pregunta es:
¿Seguro que el bit "/title1
" no se pudo usar como "-title1
" o "-t1
" o "--title1
" o "--t1
"? Eso es lo que se puede ver en el chapter 9 "Command Lines Arguments" of the pdf documentation of DiffMerge.
Si no, sospecho que hay comillas dobles para delimitar adecuadamente los diferentes parámetros. Algo así como:
"/title1="Old Version"" "$2" "/title2="New Version"" "$5"
or
"/title1=\"Old Version\"" "$2" "/title2=\"New Version\"" "$5"
Pero mi dinero preferiría estar en la "-title1
" o forma "-t1
":
-t1="Old Version" "$2" -t2="New Version" "$5"
debería funcionar bien.
Acaba de terminar mi respuesta con algunos "DiffMerge" elementos específicos, conforme a lo solicitado. – VonC