我正在使用SVN(CollabNet Subversion Edge)和Tortoise SVN来管理由多人编辑的网站。
我想限制某些用户访问某些目录(以防止他们看到数据库凭据等)。它们只需要对一个目录的读访问权。
是否可以在SVN中执行此操作?
谢谢!
修改的
他们正在运行XP和Windows 7的混合。服务器在Windows 2008上。 正在使用的协议是http。
答案 0 :(得分:7)
这可以通过使用svnaccess.conf文件来实现。假设您使用Windows域身份验证,这是一种向Windows用户提供文件夹级访问的方法。 (svnaccess.conf文件的示例部分)
[回购:/中继/ samplefolder的]
* =
@repo_restricted_users = r
@repo_super_users = rw
这里,repo_restricted_users和repo_super_users是必须在svnaccess.conf文件中先前定义的用户组 - 因此:
repo_restricted_users = john.doe,tom.riddle
repo_super_users = harry.potter,lord.voldemort
这将提供对存储库中文件夹样本文件夹的读访问权限,同时保持其他文件夹关闭。希望这会有所帮助。
答案 1 :(得分:3)
由Mike链接的SVN书籍为您提供了有关可用身份验证方法的完整概述。
如果您使用的是Windows并且不介意切换SVN服务器,VisualSVN Server是一个免费的svn / Apache包装器,可以在几分钟内安装,并提供易于点击的简单点击用户/访问管理。我已经使用它多年了,我喜欢它。
答案 2 :(得分:1)
您可以通过编写所谓的预提交挂钩,以独立于平台的方式执行您想要的操作。您可以在the svn book中阅读有关挂钩的更多信息。基本上,您将获得更新的用户名和目录位置,并能够决定是否接受该交易。
this site上有一个很好的例子。基本上,您需要使用与subversion一起打包的脚本 commit-access-control.pl 来执行权限检查。您所要做的就是编写一个简单的配置文件,描述人们可以写和读的位置。
如果你碰巧使用http和apache,那么你可以使用authz_svn apache模块描述here in the book。
答案 3 :(得分:1)
如果他们需要一个目录,我认为最简单的方法是为其创建第二个/其他存储库,并将其与{main}项目中的svn:externals
包含在一起(仍将使svn update
还从其他存储库获取更新等。)。