Cómo agregar Split Git diff hunk de cygwin usando el editor de Windows

Necesito dividir un trozo mientras hago git add -p . Pero la opción e durante la interacción no funciona. Explicaré por qué no funciona y preguntaré qué podría hacer para que funcione.

Entonces mi pedazo puede parecerse al siguiente código. De otras investigaciones, aprendí que debería usar la opción e , y luego mi editor creará las líneas del trozo, y puedo eliminar las que no quiero.

 + virtual bool fat() const { + return true; + } + virtual bool lazy() const { + return true; + } 

Claramente, me gustaría comprometer solo el método gordo y dejar el método perezoso para otro compromiso.

El problema es que estoy ejecutando Git de Cygwin y tengo el editor establecido de la siguiente manera:

 export EDITOR=/cygdrive/c/csm/notepad2/Notepad2.exe 

Por cierto, cuando confirmo posts, esto inicia el editor perfectamente.

Cuando inspecciono la command-line del editor, se ve como

 c:\csm\notepad2\Notepad2.exe /home/csm/path/to/my/code/.git/addp-hunk-edit.diff 

Claramente este es uno de esos momentos en los que Windows y Cygwin se mezclan como dos cosas que no son mixy, pero me gustaría una solución que cierre esta brecha, en lugar de tener que usar algún editor basado en Cygwin.

Creo que la pregunta cygwin y Windows git – path confusion es opuesta a la mía porque uso el Git que viene con Cygwin y quiero usar una herramienta de ayuda de Windows con él, mientras que esa pregunta busca integrar un Git nativo de Windows con un entorno de shell Cygwin.

Yo recomendaría configurar el editor de Git en lugar del editor del sistema global, pero debería funcionar para ambos:

 git config --global core.editor ~/bin/git-editor.sh 

y crea ~/bin/git-editor.sh contenga algo como:

 /cygdrive/c/csm/notepad2/Notepad2.exe "`cygpath -w -a \"$*\"`" 

cygpath convierte routes entre Windows y formatting Unix.

  • -w – convertir de Unix a formatting de Windows
  • -a – ruta de salida absoluta