2009-07-07 9 views
5

Tengo un cuadro de Windows 2003 con una configuración de servidor ssh. Tengo msysgit (git versión 1.6.2) instalado tanto localmente como en el servidor.¿Cómo evitar que git vía ssh en windows resuelva la ruta incorrecta?

El servidor tiene la siguiente ruta de acceso absoluta a mis repos:

e:\vc\git\myrepo.git 

cuando un usuario inicia sesión en él/ella serán puestos en el directorio de trabajo siguiente:

e:\vc\git\ 

Cuando se ejecuta el siguiente cmd en mi máquina dev:

git clone ssh://[email protected]/myrepo.git testrepo 

me sale el siguiente error:

fatal: ''/myrepo.git'' does not appear to be a git repository 

De acuerdo con los registros de mi ssh parece que se está ejecutando git este cmd en el servidor:

'cmd.exe /c git-upload-pack '/myrepo.git'' 

La ejecución de ese comando a nivel local (en el servidor) no por la misma razón. Estoy pensando que el problema está relacionado con git prefijando la ruta con un '/'. ¿Cómo le digo a Git que no haga esto? ¿Debería estar funcionando?

Nota: git-upload-pack funciona porque agregué \ gitinstallpath \ libexec \ git-core a la ruta de acceso. Aparentemente esto es un error y se solucionará en el futuro, este fue mi trabajo.

+0

Lo que SSH se ejecuta en el servidor? La parte de la URL después del usuario @ servidor debe estar en el formato que entiende. –

Respuesta

6

Resolví esto al cambiar mi servidor ssh de winssh a openssh (a través de la capa cygwin). Pude conectar bien (como se indicó anteriormente) usando winsshd, pero winsshd no manejaba correctamente las rutas con el prefijo "/". Probablemente podría hacer que winsshd funcione, pero cambiar a cygwin y openssh fue más rápido.

Aquí hay una good blog post para poner en marcha la instalación, si estás en una situación similar:

+1

+1 para la gran publicación de blog sobre la configuración de un servidor git + ssh en Windows. –

4

¿Has probado el siguiente?

git clone ssh://[email protected]/myrepo testrepo 

Nota la eliminación de ".git" desde el final de la ruta SSH. Solo necesita ese sufijo al final si el nombre del directorio remoto lo tiene.

Además, ¿ha probado algún otro formato de URL SSH? Para utilizar una ruta relativa, que puede probar:

git clone ssh://[email protected]/~/myrepo testrepo 

Véase el git clone man page para obtener información sobre otros formatos de URL.

+0

1) el directorio tiene .git. Perdón por el error tipográfico, corregido en cuestión. 2) resulta en el error: fatal: '' ~/myrepo.git '' no parece ser un repositorio git –

+0

También he intentado: ssh: // myuser @ myip: myrepo.git pero ssh se queja del puerto y no puede conectarse –

3

Si alguien sigue interesado en la solución:

El problema es - cmd.exe no entiende parámetros entre comillas simples. Entonces usamos sh.

Crear gup.sh archivo con la línea

 
    git-upload-pack.exe $* 

y grp.sh con

 
    git-receive-pack.exe $* 

en el servidor!

A continuación, ejecute:

servidor
 
    git clone -u 'sh gup.sh' ssh://[email protected]/e/vc/git/myrepo.git testrepo 
    git config remote.origin.uploadpack 'sh gup.sh' 
    git config remote.origin.receivepack 'sh grp.sh' 
Cuestiones relacionadas