2012-10-21 12 views
9

Mam instalację Redmine na tym samym serwerze co moje repozytorium gitolite.Redmine + Gitolite - Problem z uprawnieniami do repozytoriów i więcej

Aby połączyć swoje repozytorium do mojego Redmine przykład ja lokalnie sklonowany repo za pomocą następującego polecenia:

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

Podobnie jak pomyślnie sklonować repo na serwerze, mogę poruszać się po repo na Redmine, zgodnie z oczekiwaniami.

Chodzi o to, że tak szybko, jak to zrobię, nie mogę nic więcej wcisnąć do zdalnego repo na mojej lokalnej maszynie.

Kiedy próbuję

git push 

uzyskać następujące błędy:

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' 

jakieś pomysły na to?

EDIT # 1

W gitolite dzienniki pokazują, co następuje:

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 

Odpowiedz

16

udało mi się dostać pracę wskazując oryginalny repo do Redmine, ponieważ zarówno siedzieć na tej samej maszynie, wykonując kilka prostych czynności:

  1. dodać repozytorium Redmine z oryginalnym repo z repozytorium gitolite za . Ścieżka byłaby podobna do /home/git/repositories/my-repo.git.

  2. Początkowo Redmine nie posiada żadnych uprawnień do zapoznania się z repozytorium, więc rozwiązać ten problem poprzez dodanie użytkownika Redmine (zwykle www-data lub apache) do grupy git uruchamiając usermod -a -G git www-data (być świadomi konfiguracji serwera, dlatego, że może być nieco inny, w zależności od sposobu konfiguracji gitolite.

  3. zmienić właściwość UMASK plik .gitolite.rc, z domyślnej wartości 0077 do 0022, odpowiednik 755 (rwxr-xr-x) do katalogów i 644 (rw-r--r--) dla plików.

  4. Dla istniejących repo, może trzeba uruchomić chmod -R g+rX

Jeśli nadal masz uprawnienia kłopoty z Redmine, gdzie otwiera 404 zamiast repo na karcie repozytorium, można mieć aby uruchomić chmod -R g+rX na całym /home/git/repositories, aby upewnić się, że użytkownik Redmine może czytać całą drogę przez repozytorium.

+2

Brzmi nieźle. Ciekawe opinie. +1 – VonC

+1

Awesome, to również rozwiązuje http://stackoverflow.com/q/19122319/41977 – gc5

+1

Dzięki za podpowiedź. 'Setfacl -R -m git: rX ~ git/repozytoriów /' zrobił mi tę sztuczkę –

1

Jeśli git repack remote/origin/master nie rozwiąże problemu, należy sprawdzić umask (umask 0002) Aby uniknąć problemu uprawnień do pisania, jak wspomniano w "git: can't push (unpacker error)".

Oprócz tego "Unpacker error Git-pushing from bare repo to staging server" podsumowuje wszystkie pozostałe punkty do sprawdzenia.

+0

Komenda repack nie rozwiązuje problemu.O umask, nic się nie pokazuje. Nie jestem pewien, czy to jest problem z uprawnieniami. Jakieś alternatywy? –

+0

@DanielRibeiro ustawienie 'umask 0002' na serwerze jest nadal zalecane, aby sprawdzić, czy ma to wpływ na bieżący numer. Większość znanych mi alternatyw znajduje się w dwóch pytaniach SO, które przytaczam w odpowiedzi. – VonC

+0

A jak to zrobić? Po prostu wykonaj polecenie na serwerze? –

Powiązane problemy