2010-04-17 66 views
3

Gitosis能夠基於公鑰/私鑰對對用戶進行身份驗證。它能夠找出哪個用戶當前正在提交。但是,用戶名和電子郵件取自客戶端的Git配置('git config user.name'等),可以將其設置爲任意值。有什麼辦法可以將用戶名和電子郵件與他們的公鑰相關聯,然後讓Gitosis使用這些姓名和電子郵件作爲提交者的姓名和電子郵件地址?Gitosis可以執行正確的用戶名/電子郵件嗎?

我不在乎我是否會使用Gitosis或WebDAV或其他一些替代方法來共享存儲庫。在我看來,沒有任何可用的方法支持使用某種「正確的」用戶名和電子郵件的強制執行。如果有其他選擇,請告訴我。

回答

1

示例update-paranoid鉤在GIT中源執行以下檢查:

對於所有新提交或標籤對象的對象內的提交者(或標記器)線 必須完全匹配user.committer 之一在acl文件中列出的值。

我想,一個可以配置GitosisGitolite做類似的檢查,或者你可以寫自己的upatepre-receive掛鉤。在所有這些情況下,必須通過可以使用Git的「智能」傳輸來完成推送。這意味着通過SSH推送,或通過「智能」HTTP(git-http-backend);它不包括通過WebDAV推送(「啞」HTTP(S))。

請注意,檢查提交作者是沒有意義的,因爲它們可能來自通過電子郵件發送的修補程序(它是提交者應該在應用之前檢查它們),或從櫻桃採摘或重新綁定。

+0

謝謝你的回答。我很可能會嘗試git-http-backend。與Gitosis一起使用鉤子的問題在於它沒有設置登錄用戶的名稱(它始終設置爲「git」) – k21 2010-04-19 14:56:13

+0

@ koumes21:Gitosis(和Gitolite)根據使用的SSH密鑰進行身份驗證,所以它認爲哪個用戶訪問了存儲庫(「登錄」),即使它使用'git'shell帳戶。 Gitolite爲用戶提供「GL_USER」環境變量中的「登錄」;我不知道Gitosis。 – 2010-04-19 16:35:04

2

請注意,您不能讓服務器實際設置(覆蓋)作者或提交者,因爲爲此,它必須修改完全構建提交對象(以及基於此的所有提交)。

這會改變提交的散列/標識。所以你只能拒絕他們。 (從技術上說,當然你可以創建一個新的提交,但是這會導致所有類型的問題)。

相關問題