web-dev-qa-db-fra.com

Crochet de pré-réception d'erreur Git Push refusé

J'ai exécuté le serveur gitlabhq Rails sur une machine virtuelle, en suivant les étapes 1 à 6 de ce tutoriel https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.md et démarre Rails commande exécutant le serveur Sudo -u git -H bundle exec Rails s -e production. Après cela, j'ai créé un utilisateur à l'aide des outils d'administration et créé un nouveau projet sous cet utilisateur. Ensuite, j'essaie de pousser le projet existant vers ce dépôt comme toujours. Mais dans la dernière étape, git Push Origin master échoue avec l'erreur 

[rejeté à distance] maître -> maître (le crochet de pré-réception a été refusé)

Information additionnelle:

1) Je n'ai pas activé l'utilisateur (propriétaire du projet) via le lien d'activation par courrier électronique, car je n'ai pas configuré le post-service côté serveur et je n'ai pas trouvé d'instructions pour le faire dans ce manuel.

2) Le serveur Gitlab génère des astuces sur la façon de pousser le projet au repo et il n'y a pas de repositories/ dans le chemin. Je veux dire qu'il génère git@mygitlabhost:user/repo.git au lieu de git@mygitlabhost:repositories/user/repo.git qui est correct.

3) Quand j'ai essayé de le déboguer, j'ai ouvert le script pre-receive dans le dépôt sur le serveur et essayé de générer des variables (il y en a 3): refs = ARGF.read, key_id = ENV['GL_ID'] et repo_path = Dir.pwd et trouvé, ce key_id est toujours vide. Peut-être que le problème est là ... Dans l’affirmative, donnez-moi des suggestions pour y remédier. Merci

93
Hroft

On dirait que le problème concerne certains services, comme sidekiq. Exécuter Sudo -u git -H bundle exec rake gitlab:check Rails_ENV=production génère tous les problèmes de config.

7
Hroft

Par défaut, GitLab marque master branch comme protected (voir la partie Protecting your code dans https://about.gitlab.com/2014/11/26/keeping-your-your-code-protected/ why). Si c'est le cas dans votre cas, cela peut aider:

Ouvrez votre projet> Paramètres [> onglet Référentiel] et allez dans "Branches protégées", sélectionnez: "Les développeurs peuvent envoyer", puis réessayez.

via https://gitlab.com/gitlab-com/support-forum/issues/40

Pour les versions 8.11 et supérieures, voici comment: https://docs.gitlab.com/ee/user/project/protected_branches.html#restricting-Push-and-merge-access-to-certain- utilisateurs

152
Max Vyaznikov

Après avoir résolu le problème sur mon ordinateur local:

A. Tout d’abord, assurez-vous que vous utilisez les informations de connexion correctes pour vous connecter à Bitbucket Server (c’est-à-dire un nom d’utilisateur/mot de passe/clé SSH qui vous appartient).

B. Ensuite, assurez-vous que le nom/l'adresse e-mail est correctement défini dans votre configuration Git locale: définissez votre configuration Git locale pour le compte que vous essayez d'envoyer sous (la vérification indique que vous êtes la personne qui a validé les fichiers) * Notez que ceci est sensible à la casse, tant pour le nom que pour l'adresse électronique * Il est également sensible à l’espace - certains comptes d’entreprise ont des espaces/caractères supplémentaires dans leur nom, par exemple. "Contractor/ space space(LDN)". Vous devez inclure le même nombre d'espaces dans votre configuration que sur Bitbucket Server. Vérifiez ceci dans le Bloc-notes s'il est bloqué.

C. Si vous utilisiez le mauvais compte, changez simplement les informations d'identification de votre compte (nom d'utilisateur/mot de passe/clé SSH) et essayez à nouveau d'appuyer.

D. Sinon, si votre configuration locale est incorrecte, vous devrez la modifier. 

Pour Mac

open -a TextEdit.app ~/.gitconfig

NOTE: Vous devrez corriger les anciens commits que vous essayiez de pousser.

  1. Modifier votre dernier engagement:

    > git commit --amend --reset-author
    
      
    <save and quit the commit file text editor that opens, if Vim then
    :wq to save and quit>
    
  2. Essayez de repousser vos commits:

    > git Push
    
6
Maverick09

Vous n'avez peut-être pas accès au projet ou à la branche principale. Vous devez avoir un accès dev à Push new work up. 

Nouveau travail signifiant nouvelles branches et commits.

2
Vishav Premlall

J'ai résolu ce problème en remplaçant le protocole remote 'Origin' url de http par git dans .git/config

0
zzxwill

Ce n’était peut-être pas le cas, mais c’était la solution à mon erreur "pre-receive hook declint":

Certains référentiels n'autorisent les modifications que par Pull Request . Cela signifie que vous devez 

  1. Créez une nouvelle branche en prenant pour base la branche sur laquelle vous souhaitez appliquer vos modifications. 
  2. Validez et transmettez vos modifications à la nouvelle branche.
  3. Ouvrez une demande de tirage pour fusionner votre branche avec celle d'origine.
0

Allez dans Paramètres du projet -> Crochets -> Crochets de pré-réception

Désactiver cp nécessite une référence au problème dans commits

0
Manoj

Vous devez ajouter votre clé ssh à votre compte git. S'il génère une erreur, supprimez la clé ssh précédente et créez une nouvelle clé ssh puis ajoutez-la.

0
Hardik Hardiya