SVN:将外部文件夹迁移复制到自己的项目目录中,保留并链接历史记录

时间:2014-05-05 13:56:34

标签: svn repository tortoisesvn windows-7-x64 visualsvn-server

我有这个svn结构:

project1 \ tags
         \ trunk \ ... \ libraries \ lib1
                                   \ lib2
         \ branch

project2 \ tags
         \ trunk \ .. \ external_folder = trunk(project1) \ .. \ libraries \ lib1
                                                                           \ lib2
         \ branch

有一天,我在project1中使用了一些像STM32或FAT Filesystem这样的库。 而不是创建一个名为"外部库的自己的项目"并使用SVN:externals,我让它们保留并通过SVN在外部文件夹中使用它们:project2中的externals。现在已经过去了一段时间,我希望"清理"我的存储库。 有没有办法将此外部文件夹迁移复制到"外部库"项目同时保留历史记录?所需的结构如下所示:

external_libs \ lib1 \ tags
                     \ trunk
                     \ branch

              \ lib2 \ tags
                     \ trunk
                     \ branch

project1 \ tags
         \ trunk \ ... \ libraries (extern) \ lib1
                                            \ lib2
         \ branch

啊,顺便说一下:我使用win7作为操作系统和tovise svn和visualSVN服务器。

提前感谢您的回答:)

此致 AUREON

1 个答案:

答案 0 :(得分:1)

<强>相依

对于external_libs回购,我建议使用反向层次结构

/(trunk|branches|tags)/(lib1|lib2|...|libN)

简短回答

是的,可以在新存储库中保留lib*中的更改历史记录

更长的答案

您可以将\ libraries\lib*的数据和所有相关修订移动到新的存储库中,但需要使用TortoiseSVN之外的工具。即:您必须创建存储库部件(svnadmin dump ...| svndumpfilter ...或仅svnrdump dump URL)的转储并将此转储(svnadmin load --ignore-uuid --parent-dir ...)加载到新存储库中。加载后,您必须更改project1

中的所有外部定义