2012-10-21 14 views
9

Ho un'installazione Redmine sullo stesso server dei miei repository gitolite.Redmine + Gitolite - Problema con permessi repository e altro

Al fine di collegare il mio repository al mio esempio Redmine, ho localmente clonato il repo con il seguente comando:

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

Proprio come clonare con successo il repo sul server, posso navigare attraverso il pronti contro termine su Redmine, come previsto.

Il problema è che, non appena posso farlo, non posso aggiungere altro al repository remoto sulla mia macchina locale.

Quando provo

git push 

Ottengo i seguenti errori:

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 [email protected]:my-repo.git 
! [remote rejected] master -> master (n/a (unpacker error)) 
error: failed to push some refs to '[email protected]:my-repo.git' 

Tutte le idee su questo?

EDIT # 1

I registri gitolite mostrano la seguente:

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 

risposta

16

sono riuscito a farlo funzionare puntando il pronti contro termine originale per Redmine, dal momento che entrambi siedono sulla stessa macchina, seguendo alcuni semplici passaggi:

  1. Aggiungi un repository su Redmine con repo originale del repository di gitolite . Il percorso sarebbe qualcosa come /home/git/repositories/my-repo.git.

  2. Inizialmente, Redmine non dispone di tutte le autorizzazioni per leggere il repository, in modo da possiamo risolvere il problema aggiungendo l'utente Redmine (di solito www-data o apache) al gruppo git eseguendo usermod -a -G git www-data (essere consapevoli della configurazione del server, perché questo può essere un po 'diverso, a seconda di come si configurati gitolite.

  3. Modificare la proprietà UMASK sul file .gitolite.rc, dal valore predefinito di 0077-0022, l'equivalente di 755 (rwxr-xr-x) per le directory e 644 (rw-r--r--) per i file.

  4. dei PCT esistenti, potrebbe essere necessario eseguire un chmod -R g+rX

Se si verifica ancora il problema delle autorizzazioni con Redmine, dove si apre un 404 al posto del pronti contro termine della scheda repository, si potrebbe avere per eseguire un chmod -R g+rX nell'intero /home/git/repositories, per assicurarsi che l'utente Redmine possa leggere fino in fondo attraverso i repository.

+2

Sembra buono. Feedback interessante. +1 – VonC

+1

Impressionante, questo risolve anche http://stackoverflow.com/q/19122319/41977 – gc5

+1

Grazie per il suggerimento. Un 'setfacl -R -m git: rX ~ git/repository /' ha fatto il trucco per me –

1

Se un git repack remote/origin/master non risolve il problema, controllare l'umask (umask 0002) per evitare qualsiasi problema di scrittura permesso, come detto in "git: can't push (unpacker error)".

Inoltre, "Unpacker error Git-pushing from bare repo to staging server" riepilogare tutti gli altri punti da verificare.

+0

Il comando repack non risolve il problema.A proposito della umask, nulla si presenta. Non sono sicuro che questo sia un problema di autorizzazione. Qualche alternativa? –

+0

@DanielRibeiro l'impostazione 'umask 0002' sul server è comunque raccomandata, solo per vedere se questo ha qualche influenza sul problema corrente. La maggior parte delle alternative che conosco sono elencate nelle due domande SO di riferimento nella risposta. – VonC

+0

E come faccio? Basta eseguire il comando sul server? –

Problemi correlati