git push échoue avec la télécommande: erreur: le crochet a refusé de mettre à jour les références / têtes / maître

9

J'essaie récemment de démarrer mon propre projet sur un dépôt git communautaire, et j'ai eu quelques complications. Je suis nouveau sur git, mais voici ce que j'ai essayé de faire pour le tester.

J'exécute les commandes suivantes et elles fonctionnent toutes correctement.

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

et toutes les commandes ci-dessus s'exécutent sans erreur. Cependant, lorsque j'exécute la commande suivante, j'obtiens une énorme erreur.

git push -u origin master

et l'erreur est.

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'

Je ne sais pas vraiment quoi faire d'ici, mais toute aide est très appréciée.

De plus, je lance Arch si c'est important.

Edit: J'ai essayé de réinstaller Rake et cela n'a pas fonctionné. Ma version actuelle de rake était 10.1.1, j'ai donc essayé de le supprimer et de le remplacer par la version 10.1.0 et cela ne l'a pas non plus corrigé.

Cependant, lorsque j'installais rake, j'ai eu une erreur:

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

Cela pourrait-il contribuer au problème?

Joshua Strot
la source

Réponses:

9

Le fait que la télécommande ait refusé de recevoir les données n'est qu'un effet secondaire du vrai problème - git pense que cela a été refusé car l'un des crochets de l'extrémité distante a échoué avec un état de sortie> 0 (vous pouvez voir ce qu'il était dans le Ruby traceback). Il semble que l'un des crochets essaie d'utiliser rakeet ne le trouve pas. Ce n'est probablement pas un problème avec votre dépôt spécifique. Ce message ne provient pas non plus de votre ordinateur local - notez qu'il est préfixé avec "remote", c'est la télécommande qui manque rake, donc probablement seul un administrateur système de ce côté peut résoudre le problème.

Je vous suggère de contacter la personne qui gère votre référentiel git communautaire.

Chris Down
la source
C'est exactement ce que je pensais. Aucun des crochets de mon dépôt git n'est actif, et jusqu'à présent, rien de ce que j'ai fait ne semble même changer l'erreur ou en créer de nouveaux. Je vais contacter le propriétaire du dépôt et voir s'il a des informations sur le problème.
Joshua Strot
Il s'est avéré que le problème était que j'essayais de repousser la méthode HTTP qui n'est pas prise en charge sur leur GitLab. Vous devez plutôt pousser sur SSH, ce qui fonctionne à merveille. Je dois dire que je ne m'attendais pas à ça,
Joshua Strot
0

Je crois que c'est votre problème.

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

Rechercher cette erreur Je suis tombé sur ce Q & A sur SO, intitulé: error: hook refusé de mettre à jour refs / heads / external_pub tout en poussant une branche .

Il semblerait qu'il y ait un crochet git sur le serveur qui rejette la poussée.

extrait

Crochets côté serveur

En plus des hooks côté client, vous pouvez utiliser quelques hooks côté serveur importants en tant qu'administrateur système pour appliquer pratiquement n'importe quel type de stratégie pour votre projet. Ces scripts s'exécutent avant et après les push sur le serveur. Les pré-hooks peuvent quitter à tout moment différents de zéro pour rejeter le push et imprimer un message d'erreur au client; vous pouvez mettre en place une politique push aussi complexe que vous le souhaitez.

Pour déterminer pourquoi vous obtenez ce message d'erreur, vous devrez déterminer quel crochet vous fait trébucher. Les crochets sont stockés dans le hooksdossier à l'intérieur du dossier git (à l'extrémité du serveur distant) - recherchez le pre-receivecrochet ou le updatecrochet et vérifiez ce qui cause votre problème.

slm
la source
À l'intérieur de mon dossier hooks, j'ai plusieurs fichiers avec l'extension .sample. Je n'ai pas de hook de pré-réception, mais il y a un hook de mise à jour. Puisqu'ils ont tous l'extension .sample, je ne pense pas que l'un d'eux soit utilisé, alors est-ce que c'est un crochet sur le serveur qui me rejette? J'ai regardé en ligne et il y a quelques personnes avec mon problème qui l'ont corrigé en faisant diverses choses, dont aucune ne l'a corrigé dans mon cas.
Joshua Strot
0

Vérifier le rôle / groupe et l'autorisation dans le référentiel GIT Mon cas, uniquement l'autorisation rouge et sa résolution après l'accès en lecture / écriture fourni par l'équipe du référentiel GIT

Radhakrishnan
la source
0

A @Radhakrishnan a déjà suggéré, vous pouvez être confronté à un problème d'autorisations.

Dans le cas où vous utilisez Redmine Git Hosting , vérifiez que votre rôle de gestionnaire de permissions de projet a été attribué à l'utilisateur qui essaie de réécrire les références de suivi de son git.

Veuillez noter que je suppose que vous connaissez l' impact de git push -force sur les autres utilisateurs qui peuvent partager la même branche distante. Pour plus de détails, consultez cet article

Julio Nobre
la source