2012-08-22 109 views
12

嘗試使用git,我爲自己託管的存儲庫設置了Gitlab,它看起來很棒。Gitlab/Gitolite可以執行正確的用戶名/電子郵件

搞砸我的一件事是,任何人都可以提交提交(即:欺騙提交)。

即:我有一個公共密鑰訪問在Gitlab我的用戶設置

  • 用戶1
  • 用戶2

現在只有這些用戶可能會推 - 用自己的私人SSH密鑰 - 但似乎有沒有什麼東西停止用戶2調整他們的gitconfig提交的名字用戶1並推動?

在gitlab歷史和混帳-show顯示提交者爲任何用戶1的gitconfig文本了。我希望Gitlab將與推送ssh密鑰關聯的用戶名加入歷史記錄中,以便我知道其ssh密鑰用於推送。

該場景是回購將在團隊環境中使用,它似乎是謹慎的,不允許欺騙提交。

我已經做了一些閱讀和理解,通常人們可能會改變工作流程以擁有一個幸運的存儲庫,並且只有可信任的提交者可以推動 - 但在學習git的階段,我希望保持更集中/ SVN類型的工作流程。

這可能使用鉤子嗎?

有一個similar question回答gitosis,但即使這似乎只執行提交者是從一系列的用戶不會阻止User1欺騙爲User2 - 據我所知。

PS:也許我問的是錯誤的問題 - 有沒有辦法在gitlab中發現哪個ssh密鑰(因此是真正的用戶)被用來將代碼推入回購?它不像我所能找到的那樣。

回答

4

更新2015年

由於這個線程提到,GitLab企業有相關的項目的git的鉤子中的方式來控制電子郵件:

轉到項目設置 - > git的鉤子和檢查驗證作者電郵。

任何與已知用戶不匹配的電子郵件都會被拒絕。


原來的答覆(2012)

的部分的方式來實現用戶ID控制是使gitolite(其gitlab依賴於)拒絕該推如果推提交的至少一個不被提交推動它的那個人。

當您推送時,您將進行身份驗證(基於由Gitolite註冊的公鑰的名稱或通過其他方式(如LDAP連接))。
您可以添加pre-receive掛鉤,將檢查所有新的提交,至少應該由一個正確的名稱(即用戶的ID推動所述提交)提交。
以此pre-receive hook爲例。

+0

我想這和它非常接近的作品,但我得到$ GL_USER一個奇怪的值。該鉤子運行但錯誤「_remote:沒有發現與firstname_lastname_gmail_com_1345598530作爲提交者名稱_」。我不知道最後一串數字來自哪裏 - 一些gitlab內部的東西? Gitlab似乎不支持[他們的網頁鉤子](https://github.com/gitlabhq/gitlabhq/issues/476)以外的任何東西,所以這可能對Gitlab不起作用? – fiat

+0

後一些更挖掘,_firstname_lastname_gmail_com_1345598530_的$ GL_USER值是「鍵」表中存儲所述SSH用戶鍵gitlab數據庫中的標識符列。它似乎是自動生成的,不能從UI設置。 – fiat

+0

@fiat我確認:'GL_USER'設置了公鑰的名字,由Gitlab這樣命名,並由gitolite註冊。 – VonC

相關問題