9 votes

Redmine + Gitolite - Problème avec les permissions de dépôt et autres

J'ai une installation Redmine sur le même serveur que mes dépôts gitolite.

Afin de lier mon dépôt à mon instance Redmine, j'ai cloné localement le dépôt avec la commande suivante :

git clone --bare --local /home/git/repositories/my-repo.git

Tout comme je clone avec succès le repo sur le serveur, je peux naviguer dans le repo sur Redmine, comme prévu.

Le problème est que dès que je fais cela, je ne peux plus rien pousser vers le dépôt distant sur ma machine locale.

Quand j'essaie

git push

Je reçois les erreurs suivantes :

Counting objects: 15, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (8/8), 695 bytes, done.
Total 8 (delta 6), reused 0 (delta 0)
fatal: loose object 455f30c5243ec5b5cc698b1e51bdfb23ee6c1b22 (stored in     ./objects/45/5f30c5243ec5b5cc698b1e51bdfb23ee6c1b22) is corrupt
error: unpack failed: unpack-objects abnormal exit
To git@dev.my-host.org:my-repo.git
 ! [remote rejected] master -> master (n/a (unpacker error))
error: failed to push some refs to 'git@my-host.org:my-repo.git'

Des idées à ce sujet ?

EDIT #1

Les journaux de gitolite montrent ce qui suit :

2012-10-22.10:59:59     13121   ssh     ARGV=drgomesp   SOC=git-receive-pack 'my-repo.git'   FROM=187.65.248.7
2012-10-22.11:00:00     13121           access(my-repo, drgomesp, W, 'any'),-> refs/.*
2012-10-22.11:00:00     13121           trigger,Writable,access_1,ACCESS_1,my-repo,drgomesp,W,any,refs/.*
2012-10-22.11:00:00     13121   pre_git my-repo      drgomesp        W       any     -> refs/.*
2012-10-22.11:00:00     13121           system,git,shell,-c,git-receive-pack '/home/git/repositories/my-repo.git'
2012-10-22.11:00:00     13121   END

16voto

Daniel Ribeiro Points 3546

J'ai réussi à le faire fonctionner en pointant le repo original vers Redmine, puisque les deux se trouvent sur la même machine, en suivant quelques étapes simples :

  1. Ajouter un dépôt sur Redmine avec le repo original du dépôt de gitolite. Le chemin serait quelque chose comme /home/git/repositories/my-repo.git .

  2. Initialement, Redmine n'a pas de permissions pour lire le dépôt, donc nous corrigeons le problème en ajoutant l'utilisateur de Redmine (normalement www-data o apache ) à la git en exécutant usermod -a -G git www-data (attention à la configuration de votre serveur, car elle peut être un peu différente, selon la façon dont vous avez configuré gitolite.

  3. Changez le UMASK sur la propriété .gitolite.rc à partir de la valeur par défaut de 0077 à 0022 l'équivalent de 755 (rwxr-xr-x) pour les répertoires et 644 (rw-r--r--) pour les fichiers.

  4. Pour les dépôts existants, vous pouvez avoir besoin d'exécuter un chmod -R g+rX

Si vous rencontrez toujours le problème des permissions avec Redmine, où il ouvre un fichier 404 au lieu du dépôt dans l'onglet dépôt, vous devrez peut-être lancer une commande chmod -R g+rX dans l'ensemble /home/git/repositories afin de s'assurer que l'utilisateur de Redmine puisse lire l'ensemble des dépôts.

1voto

VonC Points 414372

Si un git repack remote/origin/master ne résout pas le problème, vérifiez votre umask ( umask 0002 ) pour éviter tout problème d'autorisation d'écriture, comme mentionné dans " git : can't push (erreur de déballage) ".

En plus de cela, " Erreur de déballage Git-pushing d'un repo nu vers un serveur de mise en scène " résume tous les autres points à vérifier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X