2010-05-20 14 views
5

Estoy intentando configurar un servidor web basado en Windows, pero hago el trabajo de desarrollo en Mac OSX. Instalé freeSSHd y msysGit en el servidor de Windows y configuré un repositorio donde lo desee. También tengo git en mi Mac y configuré un repo allí también. Cuando trato de clonar, extraer o presionar en el repositorio de Windows a través de SSH, me da un error, "fatal: error de protocolo: carácter de longitud de línea incorrecta" No importa en qué configuro el control remoto en mi cliente (Máquina - puedo señalarlo a una carpeta que no existe y todavía me da ese error.¿Cómo puedo configurar un repositorio git en Windows y luego presionar/tirar desde él en Mac OSX

También probé esto en una caja de Linux que tengo sentada y funciona perfectamente, así que no es mi Mac.

Tengo un par de ideas:

  1. Tal freeSSHd no se está comportando correctamente (as suggested here) así que podría conseguir un servidor de SSH para Windows - quizá OpenSSH

  2. Tal vez estoy escribiendo el código que combina las rutas de archivos de Mac y Windows incorrectamente. Probé:
    sudo git clone ssh: //[email protected]/C:/Users/[my_username]/[remote_repo_name] /.git [destino]

    y

    sudo git clone ssh: //[email protected]/C: \ Users \ [my_username] \ [remote_repo_name] \ .git [destino]

    estoy recibiendo el mismo error con ambos.

¿Alguien sabe qué está pasando? Mejor aún, ¿hay alguien por ahí que haya logrado hacer lo que quiero hacer (empujar y extraer de un repositorio de Windows a través de SSH)?

Gracias!

Respuesta

2

No he hecho ese tipo de configuración (mi servidor ssh es Solaris10), pero he encontrado la mayoría del error ssh al intentar configurar gitolite.

  1. como requisito previo, gitolite exige que ssh [email protected] git --version obras
  2. gitolite utiliza una propiedad de configuración de ssh interesante, desde el archivo %HOME%/.ssh/authorized_keys

No se puede simplemente copiar la clave pública allí (es decir, en "authorized_keys "), pero también puede hacer referencia a una secuencia de comandos para ejecutar el comando ssh para:

> more authorized_keys 
command="path/to/any/script/you/want" ssh-rsa AAAAB3N;...A_long_key..J6U19Jsf/kuO99XIrNE4ePzHw== [email protected]_hostname 

Significado una y ssh command probará que el control remoto ssh [email protected] dir realmente llamará a ese script en la computadora remota (PC).
(si es un script en Perl, entonces se puede llamar system(your_command) para ejecutar realmente lo que necesita)

A partir de ese guión, se puede visualizar y controlar (y depuración) cualquier variable de entorno que podrían influir en el resultado de la comando que está tratando de ejecutar a través de ssh.
Ver .gitolite/src/gl-auth-command como un ejemplo de secuencia de comandos (Perl) se puede llamar a través de ssh (siempre y cuando se declare antes de su clave pública en su archivo authorized_keys)

0

Sólo para sugerir algo extravagante, lo que acerca de no usar ssh y en su lugar utilizar compartición de archivos. Los Mac pueden acceder a los recursos compartidos de Windows y git puede funcionar de una ruta física (que es como debería parecer un recurso compartido de Windows).

Cuestiones relacionadas