2012-10-21 98 views
9

我有一個Redmine安裝在同一臺服務器上作爲我的gitolite存儲庫。Redmine + Gitolite - 問題與存儲庫權限和更多

爲了我的倉庫鏈接到我的管理平臺例如,我在本地克隆使用以下命令回購:

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

正如我成功地克隆了服務器上的回購,我可以通過回購上瀏覽Redmine,如預期。

事情是,只要我這樣做,我不能再推任何東西到我的本地機器上的遠程回購。

當我嘗試

git push 

我收到以下錯誤:

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' 

上任何想法?

編輯#1

的gitolite日誌顯示如下:

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 

回答

16

我設法得到它的工作指向原來的回購協議管理平臺,因爲兩個坐在同一臺機器上,通過以下一些簡單的步驟:

  1. 在管理平臺添加存儲庫gitolite的倉庫原回購。路徑將如/home/git/repositories/my-repo.git

  2. 最初,管理平臺沒有任何權限讀取存儲倉庫,因此我們修正通過運行usermod -a -G git www-data添加管理平臺用戶(通常www-dataapache)到git組的問題(要知道你的服務器的配置,因爲這可以是一個有點不同,根據您如何可配置gitolite。

  3. 更改UMASK財產上.gitolite.rc文件,從0077的默認值0022755 (rwxr-xr-x)目錄和644 (rw-r--r--)的文件等同。

  4. 對於現有的回購協議,則可能需要運行一個chmod -R g+rX

如果您仍然遇到與管理平臺,它會打開一個404,而不是庫選項卡上的回購權限麻煩,你可能有在整個/home/git/repositories上運行chmod -R g+rX,以確保Redmine用戶可以通過回購一路閱讀。

+2

聽起來不錯。有趣的反饋。 +1 – VonC

+1

太棒了,這也解決了http://stackoverflow.com/q/19122319/41977 – gc5

+1

感謝您的提示。一個'setfacl -R -m git:rX〜git/repositories /'爲我做了訣竅 –

1

如果git repack remote/origin/master不能解決問題,請檢查你的umask(umask 0002),以避免任何書面的許可問題,如前所述在「git: can't push (unpacker error)」中。

除此之外,「Unpacker error Git-pushing from bare repo to staging server」總結了所有其他檢查點。

+0

重新包裝命令不能解決問題。關於um​​ask,什麼都沒有出現。我不確定這是一個權限問題。任何替代品? –

+0

@DanielRibeiro在服務器上設置umask 0002'仍然是推薦的,只是爲了看看它是否對當前問題有任何影響。我所瞭解的大部分備選方案都列在答案中提及的兩個SO問題中。 – VonC

+0

我該怎麼做?只需在服務器上執行命令? –