代码之家  ›  专栏  ›  技术社区  ›  Abel

在SVN中向上移动目录的白痴指南

  •  5
  • Abel  · 技术社区  · 16 年前

    不,这不是 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 . 我肯定我错过了什么。我发现有人说你不需要一份工作副本来移动,但是,我该怎么移动呢?

    上面的所有命令,无论是发出错误还是OK,都没有执行实际的移动。我使用VisualVN服务器,可以在线浏览repo。


    解决方案

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

    使用VisualVN服务器时,默认安装为 在下面 https://hostname/svn . 要签出,需要在存储库名称前面加上该路径的前缀。上面的第一个命令应该是:

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

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

    > svn move Folder/SubFolder NewFolder
    
    3 回复  |  直到 13 年前
        1
  •  3
  •   kdgregory    16 年前

    假设您有一个有效的签出,最简单的方法是这样的(在这里您将repo-url替换为正确的url):

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

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

    这就引出了一个你必须回答的问题:签出的工作目录是什么样子的?它是否有您期望的结构,或者它是否有一些您不知道的目录?你看到了吗? .svn 回购下的目录?


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

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

    或者(在查看了VisualVN所称的“文档”之后),我建议您通过VisualSVN查看工作目录,然后执行上面的命令。

    另外,Visual SVN似乎创建了主干/标记/分支目录,因此 一定地 希望CD进入工作目录并在那里运行命令, 一旦你验证了目录结构 .

        2
  •  1
  •   Community Mohan Dere    8 年前

    在我看来,你的结账好像失败了。

    如果成功,您通常会得到一个签出文件的列表,后面跟着一行“签出版本XXXXX”。

    一些建议来自 this thread 可能会有所帮助。特别是,您可能没有为HTTPS访问正确设置SVN服务器。一旦你把它修好了,你就应该能够按照你链接的线程中的说明进行操作。

    如果修改“SVN结账”行不能解决问题,请更新/评论/回复。

        3
  •  1
  •   Abel    15 年前

    作为对您的评论的回应,结帐应该是什么样子的,这是我自己的一个项目结帐的尾部:

    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.
    

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

    推荐文章