Cygwin git enviando una ruta incorrecta a mi editor para posts de confirmación

Estoy usando git en cygwin pero no está pasando la ruta correcta a mi editor para posts de confirmación.

Estoy trabajando en un repository de testings ubicado en mi disco en:

d:\X\git\myproject 

en el terminal cygwin muestra esta ruta como:

 /cygdrive/d/X/git/myproject 

Cuando me comprometo sin el distintivo -m (de modo que abre mi editor para que introduzca un post), mi editor intenta escribir un file en la ruta incorrecta:

 d:\cygdrive\d\x\git\myproject\.git\commit_editmsg 

tenga en count la adición de "\ cygdrive \ d"

¿Cómo puedo hacer que git pase la ruta de Windows (en lugar de la ruta cygwin / unix) a mi editor?

cygwin tiene una utilidad llamada cygpath que se puede usar para convertir cygwin a routes de files de Windows nativas. Por ejemplo:

 $ cygpath --windows /cygdrive/d/X/git/myproject D:\X\git\myproject 

Vamos a crear un script que use esta utilidad para convertir la ruta antes de pasarla a su editor. Usaremos emacs como ejemplo, suponiendo que esté instalado en C:\emacs . Crea un file llamado ~/bin/git-editor.sh :

 #!/bin/sh /cygdrive/c/emacs/bin/emacsclientw.exe $(cygpath --windows "${1}") 

(dado que esto es Windows, no necesitamos establecer el indicador ejecutable en este file)

Ahora, configure su editor de git para que apunte a este script:

 $ git config --global core.editor "~/bin/git-editor.sh" 
 #!/bin/dash -e if [ "$1" ] then k=$(cygpath -w "$1") elif [ "$#" != 0 ] then k= fi Notepad2 ${k+"$k"} 
  1. Si no hay path, no pasa el path

  2. Si la ruta está vacía, pase el path vacío

  3. 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' 
  1. EDITOR permite que el script funcione con Git

  2. GIT_EDITOR permite que el script funcione con commands de Hub

Fuente

Yo tuve el mismo problema. Cygwin git no pasaría la ruta correcta a sublime 3 (no includeía la carpeta cygwin64) Creé la carpeta git-editor.sh, esto es lo que puse en ella:

 #!/bin/sh /cygdrive/c/Program\ Files/Sublime\ Text\ 3/subl.exe $(cygpath --windows "${1}") -w 

Luego hice este file .sh mi core.editor