2011-03-08 4 views
10

Estoy tratando de enviar contenido de una estación de trabajo a un servidor. Pero me da un error. Por favor, mira el siguiente para el comando y error:Error de inserción de gitolite -> remoto: ENV GL_RC no establecido

[email protected] ~/testing 
$ git push origin master 
Counting objects: 3, done. 
Writing objects: 100% (3/3), 241 bytes, done. 
Total 3 (delta 0), reused 0 (delta 0) 
remote: ENV GL_RC not set 
remote: BEGIN failed--compilation aborted at hooks/update line 20. 
remote: error: hook declined to update refs/heads/master 
To [email protected]:repositories/testing 
! [remote rejected] master -> master (hook declined) 
error: failed to push some refs to '[email protected]:repositories/testing' 

Parece que tengo que configurar la variable de entorno GL_RC. ¿Es esto así?

¿Alguien me puede decir cuál es el problema y cómo puedo solucionarlo? Estoy usando gitolite en Windows Server 2003.

+1

Tiene el prefijo 'remote:', lo que significa que el gancho de actualización gitolite imprime ese error. Parece que gitolite no está configurado correctamente en el repositorio. –

+0

¿Cómo encontrar el problema? No estoy recibiendo exactamente ¿Debo reinstalar gitolita? – amar4kintu

Respuesta

9

Como se muestra en el documento ssh troubleshooting, esto probablemente se deba a una ruta incorrecta durante la clonación.

La documentación (algunas partes de abajo sólo eran válidas para Gitolite V2) menciona:.

The second error

(es decir, "que son capaces de clonar repositorios pero no puede empujar cambios de nuevo (el error se queja de la GL_RC variable de entorno no ser conjunto, y la ganchos/actualización en su defecto, de alguna manera)

happens if you use [email protected]:repositories/reponame.git (assuming default $REPO_BASE setting -- in Gitolite V3 , it always is ~/repositories) -- that is, you used the full unix path.
Since the "prefixing" mentioned above is not required, the shell finds the repo and clones ok.
But when you push, gitolite's update hook kicks in, and fails to run because some of the environment variables it is expecting are not present.

el mensaje que aparece en una exitosa ejecución del programa "fácil de instalar" claramente incluye la siguiente advertencia:

*Your* URL for cloning any repo on this server will be 
     gitolite:reponame.git 

    *Other* users you set up will have to use 
     <user>@<server>:reponame.git 
    However, if your server uses a non-standard ssh port, they should use 
     ssh://<user>@<server>:<port>/reponame.git 

Así, en su caso, usted debe haber clonado con tu repositorio:

git clone [email protected]:repositories/testing.git 

en lugar de:

[email protected]:testing.git 
+3

@VonC: gracias por la respuesta. tienes razón sobre lo que hice. pero cuando intento clonar el repositorio usando 'git clone git @ ganesh: testing.git' da ** 'testing.git no parece ser un repositorio de git' ** No obtengo exactamente lo que está mal o cómo puedo corregirlo eso. ¿Puedes darme algunas sugerencias? Gracias – amar4kintu

+0

@ amar4kintu: solo para estar seguros, ¿qué devuelve 'git clone git @ ganesh: testing'? (Entonces, clonando sin el '' .git'' final). – VonC

+1

@VonC: Gracias por responder nuevamente. devuelve el mismo error ** 'testing' no parece ser un repositorio de git ** – amar4kintu

2

Sólo tiene el mismo error.

La respuesta correcta es que necesita usar el comando git clone gitolite:repo_name para clonar el repositorio y git push gitolite:repo_name para insertar cambios, en lugar de git clone [email protected]:repo_name.

+0

@simont: tenga en cuenta que '**' negrita no funciona en el formato del código. (Podría ser indirección o exponenciación de doble puntero, o mostrar cómo contenido en negrita en el descuento, después de todo ...) – sarnold

+0

@sarnold No había pensado en eso - notado. – simont

2

El documento de solución de problemas de ssh en http://sitaramc.github.com/gitolite/doc/ssh-troubleshooting.html (así como en el repositorio de fuente de gitolite) se ha vuelto a trabajar totalmente ahora. Espero que fluya mucho mejor y explica las cosas más fácilmente, incluyendo este error específico.

También agregaré que idealmente debe leer ese documento en su totalidad, al menos la primera vez.

Sitaram

+0

El enlace al documento de resolución de problemas de SSH ahora es http://sitaramc.github.com/gitolite/sts.html – appas

2

Trate de:

ssh [email protected] 

Debería ver gitolite-shell en lugar de bash:

ssh [email protected] 

PTY allocation request failed on channel 0 hello 
id_rsa, the gitolite version here is 2.0.3-2 (Debian) the gitolite 
config gives you the following access: 
    R W gitolite-admin 
    @R_ @W_ testing 
Connection to localhost closed. 

Si no significa omitir gitolite-shell y utilizar fiesta en su lugar. La razón podría ser que al ejecutar gl-setup your_pub_key.pub, agregó la clave al final del archivo /home/git/.ssh/authorized_keys.

Por lo tanto, esta clave nunca se alcanza, porque hay otras teclas en la parte superior. Por lo tanto, solo necesita abrir /home/git/.ssh/authorired_keys y mover la clave gitolite agregada recientemente a la parte superior del archivo.

Después de mover este registro a la parte superior del archivo, usted debería ser capaz de usar: git clone git @ Ganesh: testing.git insead de git clone git @ Ganesh: repositorios/testing.git La segunda uno clona el repositorio pero conduce al error, porque ejecuta "git push" a través de bash en lugar de gitolite-shell

Cuestiones relacionadas