问题可能是您的 Subversion存储库(是的,您可能有多个存储库)是如何使用 Apache 设置的。
使用 Apache,有两种方法可以设置 Subversion 存储库。您可以像这样单独执行每个存储库:
<Location /svn/repos>
DAV svn
SVNPath /path/to/repositories/repos
</Location>
<Location /svn/repos2>
DAV svn
SVNPath /path/to/repositories/repos2
</Location>
在这种情况下,您可以通过https://hostname/svn/repos
和访问这些存储库http://hostname/svn/repos2
。
正如您可以想象的那样,如果您有大量存储库,那么维护起来可能会相当困难。每次创建新存储库都意味着更新 Apache 配置。如果您有 50 个左右的存储库,那么您将拥有一个很难维护的非常长的配置文件。
为了处理这个问题,Apache 允许您在一个配置中配置一大堆 Subversion 存储库:
<Location /svn/repo>
DAV svn
SVNParentPath /path/to/all/svn_repositories
</Location>
现在,如果您有存储库/path/to/all/svn_repositories/proj_a
and /path/to/all/svn_repositories/proj_b
,您可以通过http://myserver/svn/repo/proj_a
and访问它们http://myserver/svn/repo/proj_b
。
请注意,这https://myserver/svn/repo
不是单个存储库的根目录,而是代表包含所有存储库的目录的 Apache虚拟目录。
现在,这是 573,198.52 美元的问题(通货膨胀的 64,000 美元问题):如果您提交http://hostname/svn/repo/proj_a
,它是否http://myserver/svn/repo/proj_b
也会更新最新的修订号?如果不是,那么每个项目都是一个单独的 Subversion 存储库,并且配置如我的第二个示例中所示,其中多个 Subversion 存储库可以共享同一个瞬间。
这意味着要创建new_project
,您需要登录到您的 Subversion 服务器,并使用svnadmin create
命令来创建您的新存储库。然后它将通过您的https://hostname/svn/repos/new_project
URL 立即可用。
如果提交更改proj_a
确实增加了 上的最新修订proj_b
,那么所有项目都在一个 Subversion 存储库中,您应该能够将其https://hostname/svn/repo
用作有效的 Subversion 目录。尝试结帐:
$ svn co --depth=immediates https://hostname/svn/repo
将--depth=immediates
只签出目录,而不是递归所有子目录。这样,您就有了一个可以使用的工作目录:
$ svn co --depth=immediates https://hostname/svn/repo
$ cd repo
$ svn mkdir --parents new_project/trunk new_project/tags new_project/branches
$ cd ..
$ svn status
A new_project/trunk
A new_project/tags
A new_project/branches
$ svn commit -m "added new_project"
看看是否有帮助。