我有一个像这样的存储库:
我想在单个父目录下合并这两个项目,保留历史记录,标记和分支,同时避免在本地结帐中每个项目下存在trunk / tags / branches子目录。所以新布局看起来像这样:
这甚至可能吗?我很怀疑,因为标签相对于它们所引用的文件向上移动了一个级别。
我只能使用svn move
命令合并中继线(对于分支也是如此):
svn move /A1/trunk /A-prime/trunk/A1
svn move /A2/trunk /A-prime/trunk/A2
但这不会保留标签。似乎我可以手动创建新的标签目录并一次移动每个子项目的标签,但这看起来很难看,我不确定我是否可以轻松移动标签 - Subversion是否给予他们特殊处理不知何故?
答案 0 :(得分:1)
当我理解你的问题时,你有一个存储库,里面有通常的多项目布局。您现在想要将一个存储库重组为不同的布局。
这当然是可能的。原因很简单:
唯一可以破解的是当你在某个地方使用svn:externals
时,它们会转到当前版本(头部)。您必须更改所有这些定义,因为您的结构已更改。你必须知道该怎么做,如果分支或标签目录中的一些顶级目录(之前是不同的)具有相同的名称,那么没有区别。
您可以使用类似的结构(类似于主干布局):
/tags
/projectA1
/rel1
/rel2
/projectA2
/rel1
/rel2
所以去吧,如果出现问题,只需从您之前完成的转储存储库中重新创建存储库。
答案 1 :(得分:0)
您可以谨慎尝试。一些有用的链接(你忘了做自己的功课)
<强>提示强>
SVN Book
转储格式也可用于合并多个内容 将不同的存储库放入单个存储库中。通过使用 svnadmin load的--parent-dir选项,可以为加载进程指定新的虚拟根目录。这意味着如果您有转储文件 对于三个存储库 - 比如calc-dumpfile,cal-dumpfile和 ss-dumpfile-您可以先创建一个新的存储库来保存它们:
然后,在存储库中创建将封装的新目录 以前三个存储库中每个存储库的内容
最后,将各个转储文件加载到各自的位置 在新的存储库中
“合并SVN存储库”中的示例
svn-merge-repos.pl -t ./proj ./foo/trunk:proj1 ./bla/trunk:proj2
将存储库“foo”和“bla”的“trunk”合并为子目录 存储库“proj”中的“proj1”和“proj2”