白痴指导在SVN中移动目录

时间:2010-01-21 12:20:47

标签: svn command-line visualsvn-server

不,这不是this的重复。

虽然我通常习惯使用SVN的可视化工具,但我发现自己现在面临着想要将Repo/Parent/ChildX/ChildY移动到Repo/ChildY的问题。我收到以下错误,我只是在寻找我在这里缺少的东西。考虑刚刚安装的服务器(来自转储),除了svn之外没有其他可用的东西。

> svn checkout https://localhost/Repo
svn: OPTIONS of 'https://localhost/Repo': 200 OK (https://localhost)

> svn move Repo/Parent/ChildX/ChildY Repo/ChildY
svn: 'Repo' is not a working copy
svn: 'Repo' does not exist

> svn move Parent NewParent
svn: '.' is not a working directory

> svn move https://localhost/Repo/Parent NewParent 
svn: Moves between the working copy and the repository are not supported

> svn move https://localhost/Repo/Parent https://localhost/Repo/NewParent
svn: OPTIONS of 'https://localhost/Repo': 200 OK (https://localhost)

> svn commit --message "Trying to get move command to work"
svn: 'C:\SVNTest' is not a working copy

我觉得有点奇怪的是,第一个命令(checkout)对我放在'Repo'后面的任何内容给出了相同的响应,比如https://localhost/Repo/SomeNonExistingName。我确定我错过了什么。我发现参考文献说你不需要工作副本来进行移动,但是,我该怎么做?

上面的命令都没有,无论是错误还是确定,都做了实际的动作。我使用VisualSVN Server,可以在线浏览回购。


解决方案

下面接受的解决方案和其他答案有助于解决此问题。对上面第一个命令的响应等于来自任何Apache服务器的常规响应。 200 OK 是HTTP响应。

使用VisualSVN Server时,默认安装位于 https://hostname/svn。要结帐,您需要在存储库名称前加上该路径。上面的第一个命令应该是:

> svn checkout https://localhost/svn/Repo
file1
file2
etc...
Revision XXX

不幸的是,这个小问题,无论多么微不足道,都没有在任何地方提到过。结帐后,从同一目录,移动变得微不足道:

> svn move Folder/SubFolder NewFolder

3 个答案:

答案 0 :(得分:3)

假设您有一个有效的结账,最简单的方法就是这样(用正确的URL替换REPO_URL):

svn co REPO_URL
cd Repo
svn mv Parent/ChildX/ChildY .
svn commit -m "moved directory"

当然,假设您没有标准的trunk / tags / branches目录。

这让我想到你必须回答的问题:签出的工作目录是什么样的?它是否具有您期望的结构,或者它是否具有您不知道的某些目录?你在Repo下看到了.svn目录吗?


编辑:我从未使用过Visual SVN服务器,但如果您的存储库位于可访问的文件系统上,则可以始终使用“文件”URL:

svn co 'file:///localhost/Repo'

或者(在看过VisualSVN所谓的“文档”之后),我建议通过Visual SVN检查你的工作目录,然后执行上面的命令。

另外,Visual SVN似乎创建了trunk / tags / branches目录,所以肯定想要cd进入工作目录并在那里运行命令,一旦你验证了目录结构

答案 1 :(得分:1)

在回复你的评论时,结帐应该是什么样的,这是我自己项目结账的尾声:

A    dblite\tags\pre-codeblocks\src\sqlite3.h
A    dblite\tags\pre-codeblocks\inc
A    dblite\tags\pre-codeblocks\inc\dblite.h
Checked out revision 31.

当然,应该创建目录结构,而你似乎并没有这样做。

答案 2 :(得分:1)

我认为你的结帐失败了。

如果成功,您通常会获得已签出文件的列表,然后是“已检出修订版XXXXX”。

this thread的一些建议可能会有所帮助。特别是,您可能没有正确设置svn服务器以进行https访问。修好后,您应该能够按照所链接的主题中的说明进行操作。

如果摆弄'svn checkout'行无法解决问题,请更新/评论/回复。