2010-12-10 87 views
13

我想迫使其他團隊成員不能在主分支上工作,而是在開發分支上工作。我們有一箇中央git-repository,在這裏我們推動我們的工作。我想知道是否有可能阻止用戶將更改推送到主分支,但只允許某些用戶這樣做。git - 爲某些用戶鎖定主分支?

我想有下面的「工作流程」

  • 發展總是隻與一個開發分支
  • 釋放經理負責主分支,只有他被允許合併完成從開發分支進入主服務器並將其推送到中央存儲庫上的主分支。

這是可能的,我怎麼能做到這一點?

+0

訪問控制是從git外包給運行服務器的操作系統。如果你正在運行你自己的服務器,我建議安裝gitosis:http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way – blueberryfields 2010-12-10 23:18:00

+0

謝謝,我會看看gitosis ... – aurora 2010-12-20 10:51:37

+0

我認爲這完全是因爲'git'是分佈式的,你不需要控制權限,因爲沒有'共享'存儲庫存在?換句話說,任何在該項目上工作的團隊成員都將在自己的存儲庫副本上工作,並且它是將分支合併到「主」存儲庫的維護人員(只是名稱,不要與主分支混淆)。 – amn 2010-12-30 13:37:23

回答

6

請參閱man githooks:在共享庫中,您可以創建一個$(git rev-parse --git-dir)/hooks/pre-receive$(git rev-parse --git-dir)/hooks/update腳本,用於驗證用戶試圖將哪些內容推送到哪個引用。 Git附帶一個update-paranoid示例鉤子來執行每個訪問控制列表ACL。

+0

謝謝... githooks似乎非常強大。我會看看gitosis和githooks – aurora 2010-12-20 10:52:04

+0

有人可以在此擴展嗎?我看着'[update-paranoid](http://git.kernel.org/cgit/git/git.git/tree/contrib/hooks/update-paranoid?id=HEAD)'鉤子,但我是不知道我明白ACL對於多個用戶來說會是什麼樣子。是它預期用戶將必須在形成用於允許提交者多個條目:'提交者= John Doe的<[email protected]>',並且這可用於N個用戶,如:' 提交者= John Doe的< [email protected]> 提交者=用戶2 <[email protected]> 提交者=用戶3 <[email protected]>' ? – blong 2014-03-04 16:44:50

+0

@ b.long:'update-paranoid'需要'/ vcs/acls中的'users/$ {USER} .acl'。git'回購(不*本*回購)爲每個SSH登錄;在每一箇中,可以有儘可能多的'committer ='行。但是您可能需要修改或重寫腳本以供自己使用。 – ephemient 2014-03-05 00:23:07

1

我的低級別方法只是讓RM成爲唯一一個使用SSH密鑰推送到其他人用作主基準的存儲庫。這樣,除了RM之外,沒有人可以推動主 - 但每個人都可以工作,因爲他們有自己的本地開發分支,開發人員可以在他們自己之間分享他們喜歡的分支。

下一步是使鍋測試儀的東西,很快就會進入主。該罐通常被稱爲nextdev。這個想法是,分支機構的影響越大,在合併掌握之前它的烹飪時間越長。這使得RM能夠完全控制哪些分支機構應該畢業,並且仍然能夠讓每個人都有機會參與。

+0

謝謝。我也想過ssh,而且安裝起來很容易。但我認爲應該有更好的方式......? – aurora 2010-12-20 10:53:27

相關問題