在 Windows 中创建一个作为 https:///servername/svn 的 svn 存储库?

Creating an svn repository served as https://servername/svn in Windows?

托管我们的 Subversion 存储库的计算机已死机,我正在尝试将备份恢复到另一台计算机上。为了尽量减少客户端的麻烦,我想保留相同的基础 URL,其形式为:

https://servername/svn

托管在 FreeBSD 机器上;目前我唯一可以用来恢复存储库的机器是 Windows。所以我寻找了一个基于 Windows 的 Subversion 服务器,并尝试了 VisualSvn 和 CollabNet SubversionEdge,但是 运行 遇到了与它们完全相同的问题,即:

如果我要求他们创建一个名为 "svn" 的存储库,他们会创建一个访问方式为:

的存储库

https://servername/svn/svn

如果我要求他们创建一个名为“/”或没有名称的存储库,他们只会给出一条错误消息,指出这是一个无效的名称。

如何使用这些产品之一(或某些其他 Windows svn 服务器)创建存储库,该存储库仅作为“/svn”而不是“/svn/somethingelse”访问?

您可能需要(喘息!)手动配置它。为此,您可能必须使用 CollabNet 的 Subversion Edge。 VisualSVN 更易于使用,但会覆盖您在 Apache 配置中所做的任何更改,除非您获得 Pro 版本。

其实很简单。在 Apache 中配置 Subversion 有两种方式:

方式一:使用父目录

<Location /svn>
   DAV svn
   SVNParentPath /opt/repos
   ....
</Location>

当您使用此方法时,/opt/repos 下的所有 Subversion 存储库都将位于 /svn 目录下的 Subversion 中。大多数自动化系统都使用这种方法,因为它为您提供了一种仅使用单个 Apache 配置来配置多个存储库的简便方法。

如果您的 Apache 服务器是 http://servername,并且您在 /opt/repos/svn 下有一个 Subversion 存储库 svn,那么您的 URL 该存储库将是 http://servername/svn/svn .好处是如果你想要另一个 Subversion 仓库,你可以简单地将它添加到 /opt/repos 目录,并且它已经配置好了。

方式 #2:配置每个目录

<Location /svn>
   DAV svn
   SVNPath /opt/repos/svn
   ....
</Location>

这允许您每次配置一个且仅一个 Subversion 存储库。对于每个 <Location ...>。但是,这种方式允许您指定根目录。在这种情况下,您的 URL 将是 http://servername/svn。正如我所说,您必须自己修改 Apache 设置,但这并不难。 Subversion manual 有你需要的信息。

如果这是 Linux/Unix,文件将在 /etc/httpd 下。将有一个包含基础 httpd.conf 文件的 conf 目录和一个名为 conf.d 的第二个目录,其中包含包含这些更改的 subversion.confsvn.conf 文件。

在 Linux 上使用 Collabnet,它位于 /opt/collabnet/etc/conf 或类似的位置。我不知道它放在 Windows 上的什么位置,但需要更改的文件将具有 *.conf 后缀,并且相当短。

使用 VisualSVN Server 3.5 或更新版本。 Starting with version 3.5, it is possible to customize the URL prefix.

在 VisualSVN Server 3.4 及更早版本中,URL 到您的存储库总是看起来像 https://myserver/svn/myrepository. But it is now possible to adjust the URL to look like https://myserver/repos/myrepository or remove the prefix https://myserver/myrepository.