有没有一种分布式版本控制系统,能够以子文件夹为粒度级别向用户授予读/写权限?例如,如果我想让UserA访问/foo树,而只让UserB访问/foo/bar,是否可行?
更新:据我了解,Git无法实现上述功能(它只处理整个代码库)。那么Bazaar和Mercurial呢?
更新:仍在寻找更好的答案。
更新:据我了解,Git无法实现上述功能(它只处理整个代码库)。那么Bazaar和Mercurial呢?
更新:仍在寻找更好的答案。
编辑:刚刚查看了评论,原帖作者需要读写权限,因此撤回此答案。
不,Git并非不可能实现。Gitolite项目非常成熟,并且多年来一直提供细粒度的访问权限(仓库/分支/目录/文件级别的权限)。
关于限制对单个文件更改的具体示例可以在这里找到:http://gitolite.com/gitolite/vref.html#NAME
这里有一些简单的示例here,还有更详细的定义规则文档available here。
编辑:添加了另一个链接
正如@maxim1000在评论中指出的那样,实现这一目标的最佳方法可能是运行一个Subversion服务器,该服务器可以对每个路径和每个分支进行细粒度的读写访问控制。如果用户想要使用DVCS客户端的功能,则可以使用git svn
或hg svn
将他们有权访问的存储库部分导入到DVCS中,并相应地进行交互。甚至有更高权限的人也可以合并来自权限较低的人的子树的更改,而不会失去DVCS实现提供的优秀合并工具。