Git 哪个版本控制允许文件级别的访问权限?

Git 哪个版本控制允许文件级别的访问权限?,git,svn,version-control,cvs,Git,Svn,Version Control,Cvs,我以前使用过SVN,因为我有一个更大的项目,我经常更换开发人员,我想在包或文件级别定义文件访问。例如,允许对基本类进行完全访问,但在某些情况下仅允许特殊用户进行读取和提交 是否有一个版本控制系统允许这样做,比如GIT、CVS或SVN,或者是否有一个解决方案可以做到这一点?我没有自己的服务器,但我使用Codesion作为托管服务。相比之下,CVS非常糟糕,你不应该碰这些东西。新的DVCSs(如Git、Hg、Bzr等)不允许您设置比整个存储库级别更精细的读取权限。(写入权限相当简单。) 您可以使用S

我以前使用过SVN,因为我有一个更大的项目,我经常更换开发人员,我想在包或文件级别定义文件访问。例如,允许对基本类进行完全访问,但在某些情况下仅允许特殊用户进行读取和提交


是否有一个版本控制系统允许这样做,比如GIT、CVS或SVN,或者是否有一个解决方案可以做到这一点?我没有自己的服务器,但我使用Codesion作为托管服务。

相比之下,CVS非常糟糕,你不应该碰这些东西。新的DVCSs(如Git、Hg、Bzr等)不允许您设置比整个存储库级别更精细的读取权限。(写入权限相当简单。)

您可以使用SVN设置细粒度读/写权限(请参阅)。请注意,拒绝对存储库部分的读取访问是一个兔子洞。我建议将项目拆分为单独的(大部分是独立的)模块,并授予或拒绝对每个模块的访问权。比如说,

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

您可能还想退一步问问自己,为什么需要细粒度访问。如果您担心开发人员带着您的源代码潜逃,那么您就有了无法用技术解决的深层次问题。如果您担心存储库中的管理员密码,请删除管理员密码。我想说,这种访问控制的主要用例是让客户SVN能够访问他们购买的功能的代码。

使用CVS甚至RCS仍然有一些原因。请参阅。“新的DVCSs(如Git、Hg、Bzr等)不允许您设置比整个存储库级别更精细的读取权限”语句至少是不正确的。Mercurial中的ACL在子树级别工作。Repo hooks(手工制作)也可以在文件级控制任何SCM,它有hooks的概念,你可以用git做@Dietrich Epp建议的同样的事情。将代码拆分为单独的存储库,并使用gitolite控制对存储库的访问。@Lazybacker:如何使用钩子阻止某人签出文件?看看这个问题:@lazybacker:这只适用于写作。对于阅读,你必须能够阅读整棵树,否则结帐不起作用。