Esta es una extensión de esta pregunta
¿Cómo uso Notepad ++ (u otro) con msysgit?
He hecho todas las combinaciones que puedo pensar para mi script de shell. cuando tengo mi console cygwin (estoy usando mintty si es que importa) puedo escribir
npp {file}
y el file se abre correctamente pero cuando hago un
git rebase -i HEAD~5
npp se abre con un nuevo documento en blanco, no el file interactivo para controlar la rebase. alguna idea de por qué esto estaría sucediendo?
git --version git versión 1.7.9
última versión de cygwin en una máquina con Windows 7 y NPP 5.9.8
también, aquí está mi script envoltorio
#!/bin/sh "C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar \ -nosession -noPlugin "$*"
Estaba en lo cierto sobre mi problema con cygwin path. Cambié mi envoltorio de conchas a este
#!/bin/sh 'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar \ -nosession -noPlugin "$(cygpath -w "$*")"
y funcionó a la perfección.
Aquí está la solución completa sin un script de envoltura .
Estas líneas asumen que estás usando la versión de 64 bits de Windows.
Ejecute el siguiente command desde el símbolo del sistema (Cygwin):
git config --global core.editor \ "'$(cygpath -u "C:\Program Files (x86)\Notepad++\notepad++.exe")' \ -multiInst -notabbar -nosession -noPlugin"
Este es un ejemplo de cómo debe verse su .gitconfig después del command :
[core] excludesfile = /home/Aternus/.gitignore_global autocrlf = input safecrlf = true editor = '/cygdrive/c/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin
Creé un script simple para ejecutar commands arbitrarios de Windows con arguments de ruta de estilo UNIX:
cygrun.sh
#!/bin/sh if test -z "$1"; then echo "Usage: $(basename "$0" .sh) program [argument]..." exit 1 fi program=$1 shift if test $# -ge 0; then IFS=$'\n' exec "$program" $(cygpath -w "$@") else exec "$program" fi
Así es como puedo usarlo en mi configuration de git (suponiendo que cygrun
es un enlace simbólico a cygrun.sh
en algún lugar de PATH):
[core] editor = cygrun 'C:/Program Files/Notepad2/Notepad2.exe' [difftool "diffmerge"] cmd = cygrun 'C:/Program Files/SourceGear/Common/DiffMerge/sgdm.exe' \"$LOCAL\" \"$REMOTE\"
De esta forma, un script puede adaptarse a muchos casos de uso similares, no es necesario crear un contenedor por separado cada vez. También puede ser conveniente usarlo desde la línea de command.
#!/bin/dash -e if [ "$1" ] then k=$(cygpath -w "$1") elif [ "$#" != 0 ] then k= fi Notepad2 ${k+"$k"}
Si no hay path, no pasa el path
Si la ruta está vacía, pase el path vacío
Si la ruta no está vacía, conviértalo a formatting de Windows.
Luego establecí estas variables:
export EDITOR=notepad2.sh export GIT_EDITOR='dash /usr/local/bin/notepad2.sh'
EDITOR permite que el script funcione con Git
GIT_EDITOR permite que el script funcione con commands de Hub
Fuente