2010-06-27 212 views
0

我與另外兩個朋友一起編碼,我們都使用同一個存儲庫。出於某種原因,git對我來說隨機失敗,只有我。Git推送隨機失敗

error: insufficient permission for adding an object to repository database .git/ objects

什麼是有趣的是,我們注意到,當朋友一推他的代碼,我再也不會收到此錯誤,而且我可以高興地把我的代碼。現在,當朋友B推送他的代碼時,突然間,我再次看到這個錯誤。

這是非常奇怪的 - 我在這裏錯過了什麼?

+1

我正在考慮文件權限問題,但我們需要更多關於您的存儲庫的細節以及如何連接到它以便說出任何有用的信息。你運行什麼樣的服務器? (Windows/Linux /其他)哪些用戶擁有存儲庫文件?你通過SSH連接?當你使用git連接時,你登錄了哪個用戶? – 2010-06-27 00:13:22

+0

這三個用戶中的每個用戶都具有相同的訪問權限,並分別通過其各自帳戶上的SSH進行連接。服務器本身就是Ubuntu。根擁有存儲庫文件。 我不明白的是爲什麼另一個人推動應該導致我的失敗,另一個推動我的成功=/ – Dirk 2010-06-27 00:19:00

回答

3

可能的想法:

  • 你的Git倉庫,未配置爲共享

  • 您的目錄權限並不完全正確,根據誰創建.git/objects的子目錄,您可能有寫權限,也可能沒有寫權限。 (如果你的文件服務器被配置爲不尊重目錄上的組粘貼位,這個問題會特別嚴重,我被這個問題困住了,它仍然存在,據我所知,如果你的服務器是這樣配置的,那麼這是不可能的在不同的組向多個用戶推到一個混帳回購協議。)

這將是知道哪些OS上和文件系統的回購是特別有用的存儲和權限如何設置。

+0

有趣的想法,我們在Ubuntu服務器上運行,我要修復讓團隊真正快速 - 我之前已經看到(事實上對象由用戶和用戶組擁有) - 並沒有把它們放在一起。會讓你知道。 – Dirk 2010-06-27 00:27:32

+0

到目前爲止,這看起來很有希望(儘管我們需要等待我們的第三個編碼器回來肯定) – Dirk 2010-06-27 00:40:55

+0

太棒了! ! ! ! – Dirk 2010-06-27 03:00:24

0

爲了擴大Norman Ramsey所說的某些事情,關於將您的存儲庫配置爲共享:要執行此操作,請轉至回購並運行git config core.sharedRepository true。這將告訴git使它在存儲庫組中創建的文件可寫;在完成此操作後,您還應該運行sudo chmod -R g+w .以確保現有文件也可以設置爲可寫組。當然,所有使用存儲庫的用戶都必須屬於擁有這些文件的組才能工作。