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
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.
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
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.
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>
Essayez de repousser vos commits:
> git Push
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.
J'ai résolu ce problème en remplaçant le protocole remote 'Origin' url
de http
par git
dans .git/config
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
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
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.