Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将项目从一个SVN移动到另一个SVN,同时更改文件夹结构并保留历史记录_Svn - Fatal编程技术网

将项目从一个SVN移动到另一个SVN,同时更改文件夹结构并保留历史记录

将项目从一个SVN移动到另一个SVN,同时更改文件夹结构并保留历史记录,svn,Svn,现在我正在尝试将项目从旧的SVN(1.6.12)转移到新的SVN(1.8.13)。 在此过程中,我希望更改旧文件夹结构,从: [root] -trunk -<subfolder1> -<projectfolder1.1> -... -<subfolder2> -<projectfolder2.1> -... [root] -树干 - - -... - - -... 进入:

现在我正在尝试将项目从旧的SVN(1.6.12)转移到新的SVN(1.8.13)。
在此过程中,我希望更改旧文件夹结构,从:

[root]   
  -trunk
    -<subfolder1>
      -<projectfolder1.1>
      -...
    -<subfolder2>
      -<projectfolder2.1>
      -...
[root]
-树干
-
-
-...
-
-
-...
进入:

[root]
-
-树干
-分支机构
-标签
-
-...
棘手的部分(至少对我来说)是,我对如何在这样做的同时保存历史感到困惑。 我已经读过几篇关于/工具的文章,甚至还有一些关于的文章,现在我想知道:

  • 上述版本的兼容性
  • 实现我的目标的正确路线图是什么
  • 是否有任何工具可用于执行此操作?可能来自客户端,而不需要在服务器上进行SSHing和修改

如有任何帮助/见解,将不胜感激!提前谢谢。

简短回答:不要一步到位

长句回答:在保存历史和其他一切的同时,一次尝试就可以做出很多改变

一步一个脚印:

  • 使用适当的
    svn
    命令重新组织当前服务器上的存储库-
    svn mv
    svn cp
    svn rename
    ,等等。您可以根据URL或从工作副本(或两者)中执行此操作-这可以100%在客户端完成。这将保留历史(只要你做得好)
  • reorg完成后,使用
    svnadmin dump
    /
    svnadmin load
    循环将存储库迁移到新服务器。您可以使用
    svnadmin rdump
    使用客户端计算机从源创建转储文件,但您确实需要访问服务器才能在新计算机上加载
    svnadmin

  • 一如既往,请确保您有良好的备份(测试还原!),并在对重要的存储库执行此操作之前,在存储库的测试版本上尝试此操作。

    对于所有其他也知道如何操作但实际上不知道如何管理SVN的人,以下是最终对我有效的方法:

    首先,我遵循@alroc的建议,通过客户端使用标准的SVN命令并将旧内容移动到新创建的主干(thx和+1!),来重组原始回购协议。结果:

    [root]
      -trunk
        -<subfolder1>
          ...
      -<tmpfolder>
        -<project1>
          -trunk (old content moved here)
          -branches
          -tags
        -<project2>
          -...
    

    最后,我通过
    python svndumpfilter.py ORG_REPO_DUMPFILE-r ORG_REPO_LOCATION-o filtered_DUMP_NAME exclude trunk2
    进行过滤,并使用
    svnadmin load
    将此过滤器转储导入我的新存储库

    一次完成所有任务绝对是危险的。不过,我建议在重新组织之前迁移到新服务器。这样,如果你在重组过程中搞砸了什么,你的源回购协议仍然是原始的,因此你可以简单地删除新的回购协议并重新开始。你在重组过程中搞砸的任何事情都可以撤销。无论如何,你应该有一个干净的备份。谢谢你的建议,我会试试的。我只是想澄清一下:我从来没有打算一步解决我的问题,但不确定一个好的起点。
    [root]
      -trunk
        -<subfolder1>
          ...
      -<tmpfolder>
        -<project1>
          -trunk (old content moved here)
          -branches
          -tags
        -<project2>
          -...
    
    [root]
      -trunk2 (renamed)
        -<subfolder1>
          ...
      -<project1>
        -trunk
        -branches
        -tags
      -<project2>
        -...