将SVN仓库的一部分与另一个仓库合并,保留历史记录

5

我有两个svn代码库,假设为AB。我想将B中的一些目录与历史记录添加到A中。这是否可能?为了更清楚地说明,以下是场景。

    repo A                                repo B
       \branches                          \branches 
             \sub-branch1                      \sub-branch B1
              \sub-branch2                      \sub-branch B2 
       \trunk                             \trunk 

我想做的是,在Repo A的分支中添加Sub-branch2。应该如何操作?
提前感谢。
2个回答

6
获取repoB的sub-branch2的转储:
  svnadmin dump /location/of/repoB | svndumpfilter include subbranch2 > my.dump

将dump合并到repoA的分支中:
  svnadmin load /location/of/repoA --parent-dir branches < my.dump

我尝试了一下,但是失败了,可能是我做错了什么。我的先前历史记录都丢失了。parent-dir是否只指定顶级目录?我的存储库的真实架构比我在一个问题中提到的要深1个级别。您能否建议我如何恢复该过程? - thetna
你所说的“revert”是什么意思?只需要从repoA中删除不需要的目录即可,repoB没有任何更改。加载过程应该会显示一些信息,这些信息将帮助您了解出了什么问题。 - vpk
我遇到了“empty revision for padding”的错误,并且该目录也未添加到指定目录中。您能告诉我原因是什么吗? - thetna
您可以尝试使用以下命令删除填充的空修订版本:svnadmin dump /location/of/repoB | svndumpfilter --drop-empty-revs --renumber-revs include subbranch2 > my.dump - vpk

1

我读了这篇文章,非常有帮助。但是我有一个疑问,如何指定转储文件的位置。我认为 svnadmin load < p 会将转储文件存储到根目录中。我该如何操作才能将其保存在所需的位置? - thetna
请阅读我的回复来获取答案。您可以在svnadmin load命令中指定父目录。 - vpk
1
使用 --parent-dir 选项作为 load 命令的一部分。有关示例,请参见 jjossarin 的回答。 - Daniel Hilgarth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接