将SVN存储库中的根级目录设置为不同存储库中的子目录

时间:2014-03-11 01:43:37

标签: svn tortoisesvn

我有两个SVN存储库,结构如下:

-Repo1
--mydir
----...\\subdirectories and files.

-Repo2
--mydir
----mydir
------mydirgrandchild
--------...\\subdirectories and files.

名字的相似性" mydir"不是附带的;这里命名的所有目录" mydir" 实际上命名相同。

我的任务是从mydir下取Repo1,并按原样放置(同时保留历史记录, 修订号等)作为mydirgrandchildRepo2的孩子。请注意,一旦复制 它会有(盛大的和伟大的)父母的名字相同。

我不知道如何处理这个问题。我在网上找到的所有解决方案都是关于创建Repo1转储并将其按原样加载到Repo2中,但这不是我需要的。在我的情况下,Repo1中的根级文件夹将成为Repo2中的子文件夹之一。

非常感谢帮助。

1 个答案:

答案 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)。不要忘记检查钩子脚本中是否存在硬编码的绝对路径。