git y Cygwin Paths con SourceTree

He instalado cygwin en un server de Windows, únicamente para el uso de ssh.

Además, he instalado Git para Windows , después de haber descontado el uso de Cygwin git ya que no es compatible con las extensiones de Windows.

Tengo un usuario de git ssh que puede iniciar session (a través de ssh) y puede crear los repositorys en el directory de inicio de este usuario. Esto me permite presionar al server desde OSX corriendo SourceTree. En este caso, el repository se encuentra con:

git@GitServer:Repos/Project.git 

La ruta real a la carpeta bajo cygwin es:

 /cygwin/home/git/Repos/Project.git 

Sin embargo, quiero que el directory Repos se coloque directamente en la raíz de la carpeta cygwin, no debajo de una carpeta principal:

 /Repos/Project.git 

Al hacer esto, SourceTree falla al intentar enviar al repository. Estoy definiendo el path de esta manera: –

 git@GitServer:/Repos/Project.git 

También he comprobado los permissions en las carpetas y este no es el problema.

La falla da como resultado este post:

fatal: '/Repos/Project.git' no parece ser un repository de git

fatal: no se pudo leer desde el repository remoto.

Por favor, asegúrese de tener los derechos de acceso correctos y existe el repository.

Puedo entender que tengo problemas si el repository se colocó fuera de la carpeta cygwin, pero no debería poder ubicarse en la raíz y nadie puede explicar cómo puedo get la ruta de SourceTree para acceder al repository, si se coloca en la raíz, sin tener que crear enlaces simbólicos?

Entonces tienes un directory con repositorys Git colocados en el directory raíz de Cygwin. Esperaré, que el directory raíz de tu Cygwin sea c:\cygwin , entonces el directory con el repository de Git es c:\cygwin\Repos\Project.git . El directory raíz de Cygwin se monta como / en Cygwin, por lo que su directory de repository de Git es /Repos/Project.git .

SourceTree es una aplicación nativa de Windows .NET, por lo que utiliza el sistema de files de Windows y las routes de estilo de Windows. Por lo tanto, si dijiste a SourceTree que searcha el repository de Git en /Repos/Project.git , estaba intentando encontrarlo en c:\Repos\Project.git , lo que obviamente es incorrecto. Simplemente configúrelo en la ruta correcta de Windows en SourceTree y funcionará.

Es lo mismo para cualquier aplicación de Windows. El path de Cygwin solo lo entienden las aplicaciones de Cygwin. Puede usar cygpath para convertir routes de Cygwin a Windows y viceversa. Este command, por ejemplo, abre el directory actual en Cygwin en Windows Explorer:

 explorer `cygpath -wa .` 

También el repository puede colocarse en cualquier lugar que desee, por supuesto, no tiene que estar en el directory raíz de Cygwin. Puede ser incluso en un disco diferente. Cygwin monta automáticamente todas las unidades de Windows como /cygdrive/<drive-letter> forma pnetworkingeterminada, por lo que, por ejemplo, d:\Repos es accesible como /cygdrive/d/Repos en Cygwin. También puede crear un enlace simbólico a cualquier directory fuera de Cygwin, por lo que puede tener eg /cygdrive/d/Repos vinculado como ~/Repos para un acceso más rápido desde Cygwin.

Solo una regla simple: en Cygwin use las routes de estilo Cygwin, en Windows use las routes de estilo de Windows.