如何将SVN存储库中的子树提取到新的子树中?
我们有一个Subversion存储库,其中有一个目录:如何将SVN存储库中的子树提取到新的子树中?,svn,system-administration,Svn,System Administration,我们有一个Subversion存储库,其中有一个目录: 除了RCS的能力之外,并不真正需要修订控制 未与存储库中的任何其他内容一起进行版本控制 修改频率大约是存储库其余部分的六倍 虽然我知道高版本号不是问题,但我还是想把这个目录从我的主存储库中拉出来,放到第二个目录中,最好是新目录 这方面的最佳流程是什么?如果有区别,SVN存储库将托管在(…检查…)FreeBSD机器上 值得注意的是,虽然我需要在新存储库中保留版本历史记录,但没有必要删除旧存储库中的内容;不管我怎么说,它可以放在那里。我会导
- 除了RCS的能力之外,并不真正需要修订控制
- 未与存储库中的任何其他内容一起进行版本控制
- 修改频率大约是存储库其余部分的六倍
可能有一种方法可以随后从历史中无用的部分清除这两个存储库(svndumpfilter),但由于硬盘空间非常便宜,我认为没有必要这样做。不管怎么说,我们已经掌握了所有相关信息。我不知道我是否正确理解了这一点,但有一个很好的解决方案。如果您的原始存储库位于svn://domain,而您经常使用的文件夹称为“folder”,我相信您可以简单地执行以下命令:
svncosvn://domain/folder
仅签出该文件夹。建议使用svnadmin dump
,然后使用svndumpfilter
工具过滤转储文件(请参阅)
例如,我有一个名为“Model”的顶级目录的回购协议,我想将其移动到自己的回购协议:
svnadmin dump my_orig_repo | svndumpfilter include --drop-empty-revs --renumber-revs Model >model_only.svndump
svnadmin load my_model_repo < model_only.svndump
svnadmin dump my_orig_repo | svndumpfilter包括--删除空转数--重新编号转数Model>Model_only.svndump
svnadmin加载我的\u模型\u回购
只使用Model子目录创建新的repo
要将其从原始存储库中删除,只需执行svn rm
。这将从最新版本的回购协议中删除它,这是最简单的方法
但是,如果我的示例中的模型目录非常大,可能我希望将其完全从原始目录中删除。我可以通过重复这个过程来创建另一个过滤的svn转储文件,并将其排除在外。然后,我将用没有排除目录的新目录替换原始目录。例如,没有历史记录。对不起,那是不可能的。我当时不知道你想保存历史:-/不用担心,这不明显。我已经修正了这个问题。还有更新的(SVN v.1.7)
svnrdump
。