是否有任何分布式版本控制系统能够授予具有子文件夹粒度级别的用户读/写访问权限?
即,如果我想/foo
为 UserA 提供对树的访问权限,并且只/foo/bar
为 UserB 提供访问权限?
据我了解,UPD 对 Git 来说是不可能的(它只将存储库视为一个整体)。Bazaar 和 Mercurial 呢?
UPD 仍在寻找更好的答案。
是否有任何分布式版本控制系统能够授予具有子文件夹粒度级别的用户读/写访问权限?
即,如果我想/foo
为 UserA 提供对树的访问权限,并且只/foo/bar
为 UserB 提供访问权限?
据我了解,UPD 对 Git 来说是不可能的(它只将存储库视为一个整体)。Bazaar 和 Mercurial 呢?
UPD 仍在寻找更好的答案。
可以使用SCM-Manager和Path Writeprotect Plugin为 Mercurial、Subversion 或 git 添加写保护。您可以定义路径以及对其具有写入权限的用户或组。
正如@maxim1000 在评论中指出的那样,实现这一点的最佳方法可能是运行一个 Subversion 服务器,它可以在每个路径和每个分支的基础上对读取和写入进行细粒度的访问控制。如果用户想要 DVCS 客户端的强大功能,他们可以使用git svn
或hg svn
将他们有权访问的存储库部分导入 DVCS 并进行相应的交互。具有较高访问权限的人甚至应该可以将具有较低访问权限的人的更改合并到子树,而不会丢失 DVCS 实现提供的出色合并工具。
编辑:刚刚检查了评论,OP正在寻找读/写访问权限,因此撤回了这个答案。
不,这对 Git 来说并非不可能。Gitolite项目非常成熟,多年来一直提供细粒度的访问权限(repo/branch/directory/file 级别的权限)。
此处可以找到有关限制对单个文件进行更改的具体示例:http: //gitolite.com/gitolite/vref.html#NAME
这里有几个简单的例子,关于定义规则的更详细的文档也可以在这里找到。
编辑:添加了另一个链接