如果你能把它从你的工作变成别人的工作呢?
使用 Apache httpd 的 Subversion 很好地与 LDAP 身份验证集成,这意味着(如果您是 Windows 商店),它也可以与 Windows 域和 Active Directory 一起使用。Windows Active Directory 组成为 Subversion 身份验证组。你可以说这个组(相对于一大群人)可以访问存储库的这一部分。
而且,如果需要将某人放入某个组,那不再是您的工作了。相反,它们需要被放置到正确的 Active Directory 组中,并且神奇地,它们也将获得所需的 Subversion 访问权限。svn_auth 文件没有更改或文档。不再更改 svn_access 文件。
考虑两组访问控制:
在大多数商店中,几乎所有开发人员都授予对整个存储库的读取访问权限。写访问可以由预提交挂钩或 Subversion 身份验证和访问文件控制。
我通常做的是拥有一个名为“开发”的 Windows Active Directory 组,任何想要对 Subversion 存储库进行读取访问的人都属于该组。如果您有 Windows 帐户,并且您是该组的成员,则您可以访问 Subversion 存储库。
然后,我使用我的预提交挂钩来微调此访问权限,以消除各种项目的不同人员的读取访问权限。人们可以签出代码并阅读代码,但除非他们获得我的钩子的写权限,否则他们无法更新代码。subversion.conf
这是我在httpd 配置中的访问设置示例:
<Location /src>
DAV svn
SVNParentPath /opt/svn_repos
SVNListParentPath on
AuthType basic
AuthName "Vegicorp Subversion Repository"
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
AuthLDAPURL "ldap://ldap.vegicorp.com:3268/dc=vegicorp,dc=com?sAMAccountName" NONE
AuthLDAPBindDN "CN=SVNRobot,OU=Users,OU=Accounts,DC=vegicorp,DC=com"
AuthLDAPBindPassword "Sw0rdf1sh"
Require ldap-group CN=Development, OU=Groups, OU=Accounts, DC=vegicorp, DC=com
Require ldap-group CN=CM-robots, OU=Groups, OU=Accounts, DC=vegicorp, DC=com
</Location>
现在,该组中的任何人Development
或CM-robots
有权访问我们的 Subversion 存储库的任何人。
然后我使用我的预提交挂钩来控制写访问。这个钩子依赖于一个控制文件进行配置。我可以做的一件事就是将控制文件放在我的 Subversion 存储库中。这样,管理人员(因为每个管理人员都有一个单独的存储库)可以编辑控制文件并确定谁拥有或没有访问权限。这使管理人员无需经过我就可以确定谁应该和不应该访问他们的项目。