通过 http 设置 SVN 服务器供多个用户使用

通过 http 设置 SVN 服务器供多个用户使用

SVN 注释功能非常强大,可以快速找到特定代码行上的特定功能。如果用户通过 http 访问 SVN,则此功能会受到一些限制(但仍然有用)。这种方式不会交换任何凭据,因此注释不会显示由使用 http 提交更改的开发人员修改的行的名称。

问题是,开发人员是否有办法将某种凭据传递给服务器上的 SVN,以唯一地标识他们的提交?在这种环境中,只需要一个 ID。svn+ssh 和文件协议等替代方法不可用。最后,此服务器位于内部 LAN 上,而不是公共 LAN 上。也欢迎提供 https 提示。

SVN 服务器在 Linux 上使用 Apache2 运行。

答案1

在 Apache 配置中:

<Location /svn>
    DAV svn
    SVNPath /mnt/big/svn
    AuthType Basic
    AuthName "SVN Server"
    AuthUserFile /etc/apache2/svn.pass
    Require valid-user
    AuthzSVNAccessFile /etc/apache2/svn_authz

并且 /etc/apache2/svn_authz 可以包含谁可以访问什么的细粒度管理:

[groups]
ops=user1,user2
it=user2,user3

[/]
* = rw

[/ops]
* =
@ops=rw

[/ro]
* = 
@ops = r
@it = r
user4 = rw

如果您手头有 ldap / active directory 服务器,则可以使用它代替 AuthUserFile 进行 apache 身份验证。

答案2

由于您通过 Apache 运行 SVN,因此您可以利用 Apache 的内置身份验证方法来控制对存储库的访问/跟踪更改。以下示例将与 htaccess 样式的设置一起使用:

AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /path/to/user/list
Require valid-user

您可以在 htaccess 文件或 VirtualHost 配置文件中进行此项配置。

答案3

简短回答:mod_authz_svn

您可以在 2009 年国际 PHP 大会上我展示的幻灯片中了解有关 apache + svn + mod_autz_svn 和其他内容,请访问http://superalbert.it/download/misc/PHPCon09_SVN_advanced.pdf

答案4

该答案假设您的开发人员使用 Windows 并且您有一个 Active Directory 域控制器。

您可以按照以下步骤将 Linux svn 服务器加入域文章

从那里,你可以配置 apache 使用 Kerberos 向 AD 进行身份验证。首先安装mod_auth_kerb,然后将 apache2 连接到 kerberos 进行身份验证。请参阅 Microsoft 的文档。如果您担心客户端和服务器之间的安全性,请确保实施 SSL。

完成后,用户可以使用他们的 Windows 密码登录,并且活动将分配给他们的用户。

不幸的是,我现在无法为您提供具体的配置详细信息,因为我不在办公室并且无法访问我们的 svn 服务器。

相关内容