我在
设置了一个svn存储库https://hostname/svn/repo
包含多个项目,例如
https://hostname/svn/repo/proj_a
https://hostname/svn/repo/proj_b
https://hostname/svn/repo/proj_c
我可以毫无问题地处理现有项目,我可以签出任何项目,提交更改,列出内容......
现在我想在存储库中创建一个新项目,但是如果我尝试
svn mkdir https://hostname/svn/repo/new_project
命令行上的我得到了臭名昭着的
Repository moved permanently to 'https://hostname/svn/repo/'; please relocate
错误消息。如果我尝试使用svn ls
列出存储库内容,则相同。如果不是之前创建新的项目文件夹而是在以后添加文件,我右键单击Eclipse中的new_project
文件夹并“共享项目”一切正常。在Eclipse中共享项目应该等同于执行
svn import new_project https://hostname/svn/repo/new_project/trunk
命令行上的,对吗?我得到的是什么?存储库出了什么问题?
编辑上面的mkdir
命令错误,因为ÁlvaroG。Vicario注意到his reply
更新看起来this entry in the FAQ可能相关(通过serverfault)
答案 0 :(得分:1)
问题可能在于如何使用Apache设置Subversion 存储库 (是的,您可以拥有多个存储库)。
使用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
和/path/to/all/svn_repositories/proj_b
,则可以通过http://myserver/svn/repo/proj_a
和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
网址提供。
如果对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"
看看是否有帮助。
答案 1 :(得分:0)
svn mkdir https://hostname/svn/ new_project
svn import new_project https://hostname/svn/repo/new_project/trunk
^^^^
答案 2 :(得分:0)
问题是配置错误的apache服务器。服务器配置就像
<DocumentRoot /path>
...
<Location /path/repo>
DAV svn
SVNPath /path/repo
...
</Location>
并且subversion FAQ指出文档根目录,而存储库路径不应重叠。