2011-09-28 33 views
3

我目前在一個單一且組織良好的資源庫中收集了大量工作。
當另一個人,比如說X,需要在一個子項目上合作時,比如說/path/to/my/subproject,我可以給X權限來讀/寫特定路徑。
從我的角度來看,我仍然擁有結構良好的存儲庫,不需要做任何事情,只需修改一些適用於X的所有簡單權限即可 - 從X的角度來看,他只能訪問相關部分。每個人都很高興。分佈式VCS中區分訪問權限

在分佈式VCS一樣的git或水銀然而,所有的訪問似乎每個庫給予。
因此,我無法看到如何在這些系統中獲得如上所述的類似功能。似乎我必須創建一個全新的存儲庫,如果人員X突然需要訪問我原始存儲庫的某些部分。
此外,如果另一個人(如Y)在X有權訪問的路徑中需要其他訪問權限,則存在問題。

我可以通過分佈式VCS中的差異化訪問權獲得類似的功能,就像我目前在顛覆中一樣?如果是這樣,怎麼樣?其他

回答

2

一種選擇是增加一個authorization層等Gitolite

它有一個用戶授權來設置:

但更常見的是,一個項目通常等同於一個回購,以便使「組件」(「一致的一組文件」)獨立於其他組件發展。
然後,您可以通過submodules將這些回購券加入一個父母回購協議中。

缺乏認證和授權的「Distributed Version Control Systems and the Enterprise - a Good mix?」進行了說明。

1

在git或我知道的任何其他DVCS中這是不可能的。 DVCS的想法是分散一切。這帶有一個事實,即存儲庫沒有中央認證。如果喬克隆你的回購,他可以完全訪問整個回購。現在你可以限制你把什麼拉入你的倉庫,但他可以用他的願望做任何事情。

有第三方解決方案,如Gitolite,可以讓你得到關閉到你想要的行爲,但它需要你設置一個服務器和追蹤鍵。這可能是值得的

關鍵是,據我所知,沒有辦法限制讀取訪問存儲庫的子目錄。寫在Gitolite或者通過選擇性地做你git fetch,但一旦用戶克隆一個Git倉庫被照顧,他們擁有整個倉庫的完全控制權,而這是他們的機器上。

從Gitolite手冊:

  • 在回購水平控制讀取訪問
  • 在分支/標籤/文件/目錄級別,包括誰可以倒帶,創建和刪除控制
  • 寫訪問分支/標籤