git push falla con el control remoto: error: gancho rechazado para actualizar referencias / cabezas / maestro

9

Recientemente estoy tratando de comenzar mi propio proyecto en un repositorio comunitario de git, y he tenido algunas complicaciones. Soy nuevo en git, pero esto es lo que he estado tratando de hacer para probarlo.

Ejecuto los siguientes comandos y todos funcionan bien.

git config --global user.name "MYNAME"
git config --global user.email "MYEMAIL"
mkdir testproject
cd testproject
git init
touch README
git add README
git commit -m 'first commit'
git remote add origin [email protected]:community/testproject.git

y todos los comandos anteriores se ejecutan sin error. Sin embargo, cuando ejecuto el siguiente comando me sale un gran error.

git push -u origin master

y el error es

Counting objects: 3, done.
Writing objects: 100% (3/3), 204 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
Username for 'http://git.xxxxxx.org': MYEMAIL
Password for 'http://[email protected]': 
remote: /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/spec_set.rb:92:in `block in materialize': Could not find rake-10.1.0 in any of the sources (Bundler::GemNotFound)
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/spec_set.rb:85:in `map!'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/spec_set.rb:85:in `materialize'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/definition.rb:114:in `specs'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/definition.rb:159:in `specs_for'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/definition.rb:148:in `requested_specs'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/environment.rb:18:in `requested_specs'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:13:in `setup'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler.rb:120:in `setup'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/setup.rb:17:in `<top (required)>'
remote:         from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
remote:         from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
remote: error: hook declined to update refs/heads/master
To http://git.xxxxxx.org/community/testproject.git
 ! [remote rejected] master -> master (hook declined)
error: failed to push some refs to 'http://git.xxxxxx.org/community/testprojact.git'

No estoy realmente seguro de qué hacer desde aquí, pero cualquier ayuda es muy apreciada.

Además, estoy ejecutando Arch si es importante.

Editar: he intentado volver a instalar el rastrillo y no funcionó. Mi versión actual de rake era 10.1.1, así que intenté eliminarlo y reemplazarlo con la versión 10.1.0 y eso tampoco lo solucionó.

Sin embargo, cuando estaba instalando rake, recibí un error:

WARNING:  You don't have /home/josh/.gem/ruby/2.0.0/bin in your PATH,
          gem executables will not run.

¿Podría esto estar contribuyendo al problema?

Joshua Strot
fuente

Respuestas:

9

Que el control remoto rechazó recibir los datos es solo un efecto secundario del problema real: git piensa que fue denegado porque uno de los ganchos en el extremo remoto falló con un estado de salida> 0 (puede ver lo que estaba en el Ruby traceback). Parece que uno de los ganchos intenta usarlo rakey no puede encontrarlo. Esto no es un problema con su repositorio específico, probablemente. Ese mensaje tampoco proviene de su computadora local; tenga en cuenta que tiene el prefijo "remoto", es el control remoto el que falta rake, por lo que probablemente solo un administrador de sistemas de ese lado pueda solucionar el problema.

Te sugiero que contactes con quien administra el repositorio de git de tu comunidad.

Chris Down
fuente
Eso es exactamente lo que estaba pensando. Ninguno de los ganchos en mi repositorio de git está activo, y hasta ahora nada de lo que he hecho parece cambiar el error o crear otros nuevos. Me pondré en contacto con el propietario del repositorio y veré si tiene alguna información sobre el problema.
Joshua Strot
Resultó que el problema era que estaba tratando de superar el método HTTP que no es compatible con su GitLab. En su lugar, debe presionar SSH, lo que funciona de maravilla. Tengo que decir que no esperaba eso
Joshua Strot
0

Creo que este es tu problema.

remote: error: hook declined to update refs/heads/master
To http://git.xxxxxx.org/community/testproject.git
 ! [remote rejected] master -> master (hook declined)

Busque este error Me encontré con este Q&A en SO, titulado: error: hook rechazó actualizar refs / heads / external_pub mientras empujaba una rama .

Parece que hay un gancho git en el servidor que rechaza el empuje.

extracto

Ganchos del lado del servidor

Además de los enlaces del lado del cliente, puede usar un par de enlaces importantes del lado del servidor como administrador del sistema para aplicar casi cualquier tipo de política para su proyecto. Estas secuencias de comandos se ejecutan antes y después de los envíos al servidor. Los ganchos previos pueden salir de un valor distinto de cero en cualquier momento para rechazar el envío e imprimir un mensaje de error al cliente; puede configurar una política de inserción que sea tan compleja como desee.

Para determinar por qué recibes este mensaje de error, deberás averiguar qué gancho te está tropezando. Los ganchos se almacenan en la hookscarpeta dentro de la carpeta git (en el extremo del servidor remoto): busque el pre-receivegancho o el updategancho y verifique qué está causando su problema.

slm
fuente
Dentro de mi carpeta de ganchos, tengo varios archivos con la extensión .sample. No tengo un enlace de recepción previa, sin embargo, hay un enlace de actualización. Sin embargo, dado que todos tienen la extensión .sample, no creo que ninguno de ellos esté en uso, ¿podría ser que sea un gancho en el servidor el que me está rechazando? Busqué en línea y hay un par de personas con mi problema que lo han solucionado haciendo varias cosas, ninguna de las cuales lo solucionó en mi caso.
Joshua Strot
0

Verifique el rol / grupo y el permiso en el repositorio GIT Mi caso, solo el permiso rojo y se resuelve después del acceso de lectura / escritura proporcionado por el equipo del repositorio GIT

Radhakrishnan
fuente
0

Si @Radhakrishnan ya lo sugirió, es posible que se enfrente a un problema de permisos.

En caso de que esté utilizando Redmine Git Hosting , verifique que su rol de Administrador de permisos de proyecto se haya asignado al usuario que está tratando de reescribir las referencias de seguimiento de su git.

Tenga en cuenta que supongo que conoce el impacto de git push-force en los otros usuarios que pueden compartir la misma rama remota. Para más detalles, consulte este artículo

Julio Nobre
fuente