如何将SVN存储库作为文件夹复制到具有历史记录的另一个存储库

时间:2013-02-10 08:07:50

标签: svn repository project

我有2个存储库

http://mysnv/svn/proj1/trunk
  • proj1_folder1
  • proj1_folder2

http://mysnv/svn/proj2/trunk
  • proj2_folder1
  • proj2_folder2

如何将带有历史记录的 proj2 复制到 proj1 主干中的文件夹,以获得以下结果

http://mysnv/svn/proj1/trunk
  • proj1_folder1
  • proj1_folder2
  • proj2
    • proj2_folder1
    • proj2_folder2

实际上我想做的是只有一个SVN存储库,其中包含 proj2 的所有内容,以及http://mysnv/svn/proj1/trunk < proj2 中的历史记录/ p>

这是我正在使用的SVN版本:

  

svn,版本1.7.8(r1419691)

我找到了this博客,但svn合并对我来说还不清楚。位于./foo/trunk:proj1的哪个位置?

我的svn文件夹结构类似于/data/svn/repos/,我没有看到trunk文件夹。

我正在寻找制作副本的命令,而不会影响我的主项目 proj1

1 个答案:

答案 0 :(得分:6)

物理聚合

  • 从proj2存储库(svnadmin dump | svndumpfilter --include --include > dumpsvnrdump URL-proj2_folder1 > dump1 & svnrdump URL-proj2_folder1 > dump2)创建所需路径的转储
  • 将转储装入带有更改的父文件夹的proj1 svnadmin load --parent-dir trunk < dump
  • 检查 proj1 / trunk / trunk 下proj2_folder1和proj2_folder2数据的存在(第二个主干是repo1转储中的基本路径)
  • 将子trunk文件夹重命名为proj2(svn mv

使用父目录trunk/Project1

将svnrdump-ed主干加载到新仓库中的示例

enter image description here

逻辑聚合

  • 创建proj1 / trunk / proj2文件夹
  • 在proj2中创建两个svn:externals(目录类型):proj2_folder1链接到proj2 / trunk / proj2_folder1 和proj2_folder2链接到proj2 / trunk / proj2_folder2