【发布时间】:2014-01-21 12:03:43
【问题描述】:
我们在特定物理位置/mnt/data1/repos 有多个 SVN 存储库
并且回购的结构如下
repos
|
App1
|
trunk
|
module1
|
module2
|
branches
|
App2
|
trunk
|
module1
|
module2
|
branches
|
App3
|
trunk
|
module1
|
module2
|
branches
我们正在尝试将多个存储库合并到单个存储库,如下所示,位于不同的路径 /mnt/data2/repo
repo
|
trunk
|
App1
|
module1
|
module2
|
App2
|
module1
|
module2
|
App3
|
module1
|
module2
我在/mnt/data2/repo使用svnadmin 创建了一个repo
创建目录/mnt/data2/repo/trunk/App1、/mnt/data2/repo/trunk/App2 和/mnt/data2/repo/trunk/App3使用svn mkdir。
然后我尝试做 app1 /mnt/data1/repos/App1/ 的 svn dump,使用 svndumpfilter 和 include trunk 过滤它,并将 svn import 做为 /mnt/data2/repo/trunk/App1。它失败了,因为 /mnt/data2/repo/trunk/App1 不是 repo 的根。
请告诉我执行此合并的最佳方式。 重要的是我们应该保留所有 repos 的修订历史记录。
编辑:
我执行了以下步骤。
svnadmin dump --quiet /mnt/data1/repos/App1 > App1.dmp
svndumpfilter include --targets /tmp/list.txt < App1.dmp > App1Trunk.dmp
svnadmin create /mnt/data2/repo/
svn mkdir --parents svn://<IP>:<PORT>/trunk/App1 -m "Creating MC directory"
svnadmin load --quiet --parent-dir trunk/App1 /mnt/data2/repo < App1Trunk.dmp
当我尝试加载转储时,我发现它仍在创建trunk/App1/trunk/module1、trunk/App1/trunk/module2 等。帮助我将数据加载到trunk/App1/moudle*。
【问题讨论】:
-
感谢您指出我的答案。但是当我尝试导入过滤后的转储时,它失败了。让我试试
svnadmin import和--parent-dir并更新 -
没有
svnadmin import命令。导入过滤后的转储时遇到什么错误? -
正如您在另一个线程中的回答中提到的,我创建了转储并使用 svndumpfilter 过滤。然后我使用
cd /data/repo svnadmin created newrepo创建了一个新的仓库。现在,当我从转储文件svnadmin load --parent-dir /trunk /data/repo/newrepo加载数据并执行svn list file:///data/repo/newrepo时,什么都没有显示... -
@bahrep 我执行了您建议的步骤,但它也将原始存储库路径添加到新存储库。我已将问题编辑得更清楚。
标签: svn version-control merge consolidation