我有两个SVN存储库,结构如下:
-Repo1
--mydir
----...\\subdirectories and files.
-Repo2
--mydir
----mydir
------mydirgrandchild
--------...\\subdirectories and files.
名字的相似性" mydir"不是附带的;这里命名的所有目录" mydir" 实际上命名相同。
我的任务是从mydir
下取Repo1
,并按原样放置(同时保留历史记录,
修订号等)作为mydirgrandchild
中Repo2
的孩子。请注意,一旦复制
它会有(盛大的和伟大的)父母的名字相同。
我不知道如何处理这个问题。我在网上找到的所有解决方案都是关于创建Repo1
转储并将其按原样加载到Repo2
中,但这不是我需要的。在我的情况下,Repo1
中的根级文件夹将成为Repo2
中的子文件夹之一。
非常感谢帮助。
答案 0 :(得分:2)
svnadmin dump 和 svnadmin load 是正确的工具。如果 repo1 / (完整历史记录)中的路径与 repo1 /.../ mydirgrandchild / (头部修订版)中的路径不相交,则以下步骤应该执行作业:
svnadmin dump /path/to/repo1 > /tmp/repo1.dump
svnadmin load --parent-dir mydir/mydir/mydirgrandchild /path/to/repo2 < /tmp/repo1.dump
路径不是不相交的,那么您应该先将转储中的路径更改为 repo2 。有关更多信息,请参阅以下链接:
为了最大限度地降低数据损坏的风险,您应该在真正的SVN存储库上运行它之前测试第二步。这意味着您应该首先创建 repo2 的精确副本。您可以使用文件系统工具执行此任务(例如cp -a
)。不要忘记检查钩子脚本中是否存在硬编码的绝对路径。