2011-12-24 27 views
2

我以前使用SVN,因爲我有一個更大的項目,我經常更改開發人員的工作,我想在包或文件級別上定義文件訪問。例如給予基本類的完全訪問權限,但只允許在某些情況下閱讀和提交特殊用戶。哪個版本控制允許在文件級別訪問權限?

有沒有一個版本控制系統,可以讓GIT,CVS或者SVN這樣的版本控制系統,還是有一個解決方案來做到這一點?我沒有自己的服務器,但我正在使用Codesion作爲託管服務。

回答

4

CVS是可怕的(相比),你不應該觸摸的東西。新的DVCS如Git,Hg,Bzr等不允許您設置比整個存儲庫級別更精細的讀取權限。 (寫入權限相當容易。)

您可以使用SVN設置細粒度的讀取/寫入權限(請參閱book)。注意否認讀取訪問存儲庫的某些部分是一個漏洞。我建議將項目分爲單獨的(主要是獨立的)模塊,並授予或拒絕整個模塊訪問。例如,

project/ [world readable, writable by some] 
moduleA/ [readable/writable by "team A"] 
moduleB/ [readable/writable by "team B"] 

您可能還想退後一步,問自己爲什麼需要細粒度訪問。如果你擔心開發人員潛逃你的源代碼,那麼你有深刻的問題,無法用技術來解決。如果您擔心存儲庫中的管理員密碼,請刪除管理員密碼。我想說的是,這種訪問控制的主要用例是讓客戶訪問他們購買的功能的代碼。

+0

還有一些原因使用CVS,甚至是RCS。看[這個答案](http://stackoverflow.com/a/7871646/827263)。 – 2011-12-25 04:16:45

+0

「新的DVCS如Git,Hg,Bzr等不允許您設置比在整個存儲庫級別更精細的讀取權限」語句至少是不正確的。 Mercurial中的ACL在子樹級別上工作。對於任何具有鉤子概念的SCM,Repo-hooks(手工製作)*可以控制文件級別的文件級別。 – 2011-12-25 04:50:00

+0

@Dietrich Epp建議使用git來做同樣的事情。將代碼拆分成獨立的存儲庫,並使用gitolite來控制對存儲庫的訪問。 – wadesworld 2011-12-25 05:06:54

相關問題