分布式VCS中的差异化访问权限

时间:2011-09-28 11:06:49

标签: git version-control mercurial dvcs

我目前在subversion中的一个组织良好的存储库下收集了我的大部分工作 当另一个人(比如X)需要在子项目上进行协作时,比如/path/to/my/subproject,我可以简单地授予X在该特定路径中读/写的权限。
从我的角度来看,我仍然拥有结构良好的存储库,除了修改一些简单的权限以便为X工作之外不需要做任何其他事情 - 从X的角度来看,他只能访问相关部分。每个人都很开心。

在像git或Mercurial这样的分布式VCS中,似乎每个存储库都提供了所有访问权限 因此,我没有看到如何在这些系统中获得如上所述的类似功能。如果X人突然需要访问原始存储库的某些部分,我似乎必须创建一个全新的存储库 此外,如果另一个人,比如Y,在X可以访问的路径中需要其他访问权限,我就有问题。

我可以在分布式VCS中获得与我目前在subversion中具有差异化访问权限的类似功能吗?如果是这样,怎么样?

2 个答案:

答案 0 :(得分:2)

另一个选择是添加authorizationGitolite

它具有授权用户的设置:

但更常见的是,是的,一个项目通常等同于一个回购,以便“组件”(“连贯的文件组”)独立于其他组件自行发展。
然后,您可以通过submodules将这些回购加入一个父回购中。

Distributed Version Control Systems and the Enterprise - a Good mix?”中解释了缺少身份验证和授权。

答案 1 :(得分:1)

这在git或我所知道的任何其他DVCS中是不可能的。 DVCS的想法是分散一切。这带来了存储库没有中央身份验证的事实。如果joe克隆你的回购,他可以完全访问整个回购。现在你可以限制你进入你的存储库的内容,但是他可以用他的任何东西做任何事情。

有像Gitolite这样的第三方解决方案可以让你关闭来实现你想要的行为,但这需要你设置一个服务器并跟踪密钥。这可能是值得的

关键是,据我所知, ,没有办法限制对存储库子目录的读访问权限。写入可以在Gitolite中处理,也可以选择性地执行git fetch,但一旦用户克隆了git存储库,他们就可以完全控制整个存储库

来自Gitolite手册:

  
      
  • 在回购级别控制的读取访问权限
  •   
  • 在分支/标记/文件/目录级别控制的写入访问权限,包括谁可以回滚,创建和删除分支/标记
  •