2012-03-05 14 views
6

Tenemos una red de Windows y estoy tratando de poner Tortoise Mercurial en funcionamiento a través de SSH para un repo central para nuestro pequeño equipo. Puedo hacer que funcione en su mayor parte pero plink/tortoiseplink colgar DESPUÉS de ejecutar comandos con éxito (clonar/presionar, etc.)Windows TortoiseHg plink cuelga DESPUÉS clon/push

Configuré Freesshd en nuestro servidor Widnows 2008 rc2 junto con Tortoise Hg. Me he generado una clave pública/privada en el servidor (tenía problemas para generar en el cliente) usando PuttyGen. Clave privada que copié a mi cliente y actualicé mercurial.ini. Clave pública Renombreé y actualicé Freesshd para señalar la carpeta que contiene las claves públicas. En el lado del cliente, he registrado mi clave privada con el concurso, he creado una sesión en Putty junto con apuntarla a mi clave privada y la guardé. Cuando uso Putty para hacer mi conexión inicial, las cosas empiezan a ponerse raras.

Aparece un símbolo del sistema para el nombre de usuario (sin solicitud de contraseña) y, en el símbolo del sistema (después de la autenticación), no puedo escribir. Quizás un problema con Putty. Trataré de usar Tortoise vía (TortoisePlink.exe).

En mercurial.ini tengo: [ui] ssh = "C: \ masilla \ TortoisePlink.exe" -ssh -2 -batch -C -i C: \ Users \ Jude.ssh \ JudePrivate.ppk

Si utilizo la consola puedo clonar el repositorio pero se cuelga DESPUÉS de hacer todo. Usando --debug, la última línea es: 3 archivos actualizados, O archivos fusionados, 0 archivos eliminados, 0 archivos no resueltos

Tipo de lo que esperaría, ya que los archivos obtienen clones. Pero luego no puedo hacer nada más. Ctrl+C no hace nada y tengo que matar el proceso. (Que por cierto, muestra Ctrl^C en el símbolo del sistema así como el resto de la combinación del teclado).

El repositorio se clona, ​​aparece la versión correcta de los archivos pero la ventana de la consola no se cierra o me devuelve el control.

Si intento usar Hg Workbench, aparece un problema similar. Puedo clonar y empuje - que en realidad sucede - pero utilizando la interfaz gráfica de usuario me sale:

% hg --repository C:\repositories\HgTest push --debug   
ssh://[email protected]:22/d:/repositories/hgtest 
pushing to ssh://[email protected]:22/d:/repositories/hgtest 
running "C:\putty\TortoisePlink.exe" -ssh -2 -batch -C -i 
C:\Users\Jude\.ssh\JudePrivate.ppk [email protected] -P 22 "hg -R d:/repositories/hgtest serve --stdio" 
sending hello command 
sending between command 
remote: 145 
remote: capabilities: lookup changegroupsubset branchmap pushkey known getbundle unbundlehash batch stream unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024 
remote: 1 
query 1; heads 
sending batch command 
searching for changes 
all local heads known remotely 
no changes found 
sending listkeys command 
checking for updated bookmarks 
sending listkeys command 

La barra verde en la parte superior del banco de trabajo dice "Empujar a ssh: // Jude @ dev01: 22/d:/repositories/hgtest ... "como lo hace la barra de estado en la parte inferior. Lo dejé así todo el fin de semana y cuando volví, seguía siendo así. Todavía puedo usar Hg Workbench (tipo de) pero no puedo usar pull/push/clone. Intentar cerrar Hg Workbench da como resultado el mensaje (en la barra de estado) Sync tab cannot exit y no puedo cerrar la aplicación. Al matar TortoisePlink.exe (o Plink.exe, lo que yo intente) libera la aplicación, puedo usarla o cerrarla normalmente.

Inicialmente pensé que era un problema con TortoiseHg o TortoisePlink, pero descargando Plink de los resultados del sitio de Putty en el mismo.

Para aclarar:
- Me puede empujar/clon a través de SSH y ninguna solicitud de contraseña
- Puedo hacerlo a través de la línea de comandos o en el banco de trabajo de Hg
- Independientemente del método que yo uso (o Plink.exe o TortoisePlink.exe) el proceso debe ser eliminado manualmente.

software utilizado + versiones
Client (Windows Vista de 32 bits)
tortuga Hg 2,3 (Merc 2.1, Python 2.6.6)
Plink 0.62
Servidor - (Windows Server 2008 RC2)
freeSSHd 1.2.4
Igual que el anterior tortuga

Un montón de búsqueda ha dado nada de uso. He intentado todas las sugerencias que he visto (incluso si están relacionadas de forma marginal) pero fueron en vano. Como las funciones reales están funcionando, supongo que configuré correctamente las claves, SSH, Tortoise, etc.

Espero que me falta una opción simple en alguna parte, pero sospecho que está esperando algún tipo de aviso del usuario.

Crucemos los dedos :)

ACTUALIZACIÓN === ===

he encontrado el registro de eventos para masilla (Haga clic derecho en la ventana de la consola masilla, voilá, "Registro de eventos" opción. Una vez yo he cargado la sesión y se abrió, me sale la ventana de consola y un login as: pronta Después de escribir mi nombre y pulsar Intro, me sale:.

Reading private key file "C:\Users\Jude\.ssh\JudePrivate.ppk" 
Pageant is running. Requesting keys. 
Failed to get reply from Pageant 
Offered public key 
Offer of public key accepted 
Sent public key signature 
Access granted 
Opened channel for session 
Allocated pty (ospeed 38400bps, ispeed 38400bps) 
Started a shell/command 

y es en esta etapa I el comando cambia a c:\Windows\system32> y puede escribe cualquier cosa.

=== === ACTUALIZACIÓN 2

Usando plink que hacer lo siguiente en la consola:

plink -v -ssh [email protected] "cmd /c echo hello"

y, al igual que toda la información -v da, yo vea hello luego Server sent command exist status 0 y Disconnected: All channels closed. Esto es lo que esperaría.

Si lo hago con tortoiseplink, `tortoiseplink-v -ssh Jude @ dev01" cmd/c echo hola "'No veo nada devuelto o escrito en la ventana y me aparece un símbolo del sistema nuevamente.

Esto implica que SSH funciona igual que el alias (dev01). Pero, ¿debería ver algo cuando use TortoisePlink?

escribiendo hg clone --verbose -- ssh://[email protected]/d:/repositories/hgtest C:\repositories\test vuelve a buscar los archivos, los copia en la carpeta de prueba pero no devuelve el símbolo del sistema. Última línea es 3 files updated... etc.

ACTUALIZACIÓN === === 3

Parece hg.exe se genera por freeSSHd en el servidor y que se cierra/acabado. Cuando el proceso hg.exe se cancela en el servidor, el cliente (cuadro de diálogo consola/clonación) se comporta y finaliza el comando correctamente.

Para aclarar:

  1. utilizo clon de la línea de comandos o HG Banco de trabajo y especifique el alias de recompra
  2. De acuerdo con los registros que todo está bien, estoy autenticado, los archivos se tiran hacia abajo a través de SSH y copiado al repositorio local que especifiqué en 1
  3. En este punto se cuelga, ya sea la consola o HG Workbench o la opción de clic derecho/clonación.
  4. Usar Process Explorer en el servidor me permite matar a hg.exe generado por el servicio FreeSSHd
  5. Tan pronto como hago esto, el cliente dice "comando completado con éxito".

Por lo tanto, ahora parece ser un problema con Tortoise Hg en el servidor. Tal vez freeSSHd y la tortuga no juegan bien juntos ... supongo que voy a reinstalar todo ...

=== === ACTUALIZACIÓN 4

Parece que no soy el único con este problema. Había visto esto antes en SO, pero no era relevante en ese momento. Sin embargo, ahora estoy obteniendo el mismo problema: Mercurial over ssh client and server on Windows Ese problema no fue resuelto (hace dos años) entonces ¿tendré que mantener esta pregunta abierta?

+0

http: // mercurial .selenic.com/wiki/AccessingSshRepositoriesFromWindows –

+0

Ya tenía el enlace marcado y lo he seguido. Lo configura bien, pero no ayuda a solucionar problemas ... – Jag

+0

enlace de 2010 sobre la configuración ** freeSSSHd ** para Mercurial - http://opapao.blogspot.com/2010/02/setting-up-freesshd-to -work-with.html, pero puede ser relevante de alguna manera –

Respuesta

2
  1. Primero de todos - leer documentos!

    hg help urls 
    Valid URLs are of the form: 
    
    .... 
    
    ssh://[[email protected]]host[:port]/[path][#revision] 
    
  2. Plink utiliza para la opción -l nombre de usuario

  3. depuración correcta ssh-connect (y la ruta utilizable) con pura TortoisePlink, eliminar todas las opciones innecesarias

+0

He leído los documentos que pude encontrar: soy usuario de Windows y, por lo tanto, no estoy acostumbrado a usar una consola para la documentación. De todos modos, las URL que estoy usando están bien. – Jag

+0

@Jag - 1. el puerto predeterminado es inútil en la URL 2. Dudo que la ruta definida funcione 3. Usted ** tiene que usar la consola ** para depurar la conexión de plink 4. -l opciones * es necesario * –

+0

Podría decirme cómo 'ssh: // Jude @ dev01: 22/d:/repositories/hgtest' es diferente al formato de URL que pegó? Estoy usando -i y especificando una clave privada, es por eso que funciona. Si lo elimino, aparece el 'host no existe, no hay una respuesta adecuada desde hg remoto'. 'plink.exe jude @ dev01' cambia el símbolo del sistema a' c: \ windows \ system32> 'pero no puedo escribir nada y tengo que ctrl + c. 'tortoiseplink.exe jude @ dev01' desde la línea de comandos no me da nada. El símbolo del sistema permanece como 'c: \ putty>' (donde copié algunos extes relacionados con masilla para evitar espacios en las rutas). – Jag