2009-08-12 21 views
5

我想通過ssh設置一個共享的git倉庫,將用戶的公鑰複製到authorized_keys。我真的很喜歡ssh-key中的「username」作爲repo中提交歷史記錄的一部分(這樣用戶「joe」不能只將他的名字設置爲「kate」) - 我們需要某種責任) 。有沒有辦法做到這一點?我可以將ssh用戶名與git通過ssh進行提交相關聯嗎?

回答

5

簡而言之,不,沒有辦法。原因在於作者和提交者的詳細信息是在進行提交時設置的,並且通常在本地發生。 A git push稍後發生時會將現有提交推送到遠程存儲庫。因爲提交已經由SHA1哈希創建並引用,所以在推送操作期間不能更改它們。

你可能會考慮做一個預先接收或更新鉤子,以防止人們推送他們還沒有創作的提交,但這可能會阻止很多合法用途。您可能會發現相信您的用戶是唯一明智的選擇。

+0

因此,如果用戶更改其提交者/作者姓名和電子郵件地址並推送一些僞裝成同事的黑客代碼,那麼在裸回購級別沒有任何意圖阻止此操作? – pinkvoid 2015-12-03 15:10:35

5

這不會與git的分散性質。想象一下joe合併凱特的開發部門。有他的地方克隆從凱特提交現在:

* joe: Merge branch 'kate' 
|\ 
| * joe: update foo 
* | kate: fix test 
* | kate: add test 
|/ 
* joe: initial commit 

如果推到中央存儲庫,現在,你在執行用戶名,凱特的提交將被歸於joe

1

在Git-hub上,每個用戶都有自己的服務器端git存儲庫。也許你可以讓用戶只能推到那裏,你會有一個管理員拉入「官方」存儲庫? 這樣,就有了完整的可追溯性和問責制。你也將有一個主持人,最終的責任。

+0

這是一個很好的建議,但我們並不想要一個管理員,因爲所有提交者都被視爲同等信任。一個管理員只是開銷,我們避免像瘟疫一樣... – krosenvold 2009-08-13 06:09:38

相關問題