将项目从一个SVN移动到另一个SVN,同时更改文件夹结构并保留历史记录
现在我正在尝试将项目从旧的SVN(1.6.12)转移到新的SVN(1.8.13)。将项目从一个SVN移动到另一个SVN,同时更改文件夹结构并保留历史记录,svn,Svn,现在我正在尝试将项目从旧的SVN(1.6.12)转移到新的SVN(1.8.13)。 在此过程中,我希望更改旧文件夹结构,从: [root] -trunk -<subfolder1> -<projectfolder1.1> -... -<subfolder2> -<projectfolder2.1> -... [root] -树干 - - -... - - -... 进入:
在此过程中,我希望更改旧文件夹结构,从:
[root]
-trunk
-<subfolder1>
-<projectfolder1.1>
-...
-<subfolder2>
-<projectfolder2.1>
-...
[root]
-树干
-
-
-...
-
-
-...
进入:
[root]
-
-树干
-分支机构
-标签
-
-...
棘手的部分(至少对我来说)是,我对如何在这样做的同时保存历史感到困惑。
我已经读过几篇关于/工具的文章,甚至还有一些关于的文章,现在我想知道:
- 上述版本的兼容性
- 实现我的目标的正确路线图是什么
- 是否有任何工具可用于执行此操作?可能来自客户端,而不需要在服务器上进行SSHing和修改
如有任何帮助/见解,将不胜感激!提前谢谢。简短回答:不要一步到位 长句回答:在保存历史和其他一切的同时,一次尝试就可以做出很多改变 一步一个脚印:
svn
命令重新组织当前服务器上的存储库-svn mv
、svn cp
、svn rename
,等等。您可以根据URL或从工作副本(或两者)中执行此操作-这可以100%在客户端完成。这将保留历史(只要你做得好)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>
-...