当我第一次在服务器上设置 SVN 时,我选择了 WebDAVhttp://...
访问方法。但是,我找不到如何使用此配置启用多个存储库。使用此方法,任何一次提交都会增加所有项目的修订计数器。
svn://
接下来,我使用附带的 svnserve 守护程序切换了协议。使用这些svnserve -d -r /storage/svn/
选项,我能够为多个单独的存储库提供服务。但是,我和我的合作伙伴对我们的密码必须存储在纯文本文件中感到不满意。
我需要一种方法来提供多个存储库,其中许多存储库具有相同的访问权限。有人能给我指明正确的方向吗?
答案1
假设您有如下结构:
- /var/repositories/repo1
- /var/repositories/repo2
- /var/repositories/repo3
你需要类似这样的东西:
<Location /svn>
DAV svn
SVNParentPath /var/repositories
AuthType Basic
Allow from all
AuthzLDAPAuthoritative off
AuthName "SVN Auth"
AuthzSVNAccessFile /var/security/svnauthz.conf
AuthUserFile /var/security/passwd.conf
Require valid-user
</Location>
为了方便管理,我建议你使用SVN管理器。这将帮助您创建存储库、管理权限和组。
为了方便使用 http 来查看和导航存储库,我建议您使用网页版本控制这将帮助您浏览存储库、进行差异分析和阅读代码。
答案2
我认为有两种常用方法可以避免在 svnserve 配置中存储明文密码。这两种方法都适用于多个存储库,并基于您的 svnserve 设置进行构建。这两种方法都比 WebDAV 访问速度更快,至少在 SVN 1.6 及更早版本中是这样。
我已将这些选项链接到官方 SVN 文档,因为它们在这个答案中解释起来有点长。
SASL 相当容易设置,并且具有可插入身份验证插件的优势,从带有 MD5 哈希的基本文件到 Kerberos 或 Active Directory 集成。非常强大。此选项不需要本地系统帐户。
SSH 的设置稍微困难一些,但许多软件开发人员已经熟悉 SSH 身份验证,并且已经拥有用于向其服务器进行身份验证的 SSH 密钥对。此选项需要提交者的本地系统帐户,但不需要 svnserve 守护程序。您的客户端通过 svn+ssh:// 协议连接。并在服务器上启动自己的 svnserve 进程。加密和身份验证由 ssh 客户端而不是 SVN 客户端完成,因此您应该使用 ssh 密码缓存工具(如 pageant(在 Windows 上))以避免重复输入密码。SSH 选项在分布式版本控制系统(如 Git 和 Mercurial)中非常流行。
查看官方 SVNBook 文档以获得更详细的描述和设置。