在考虑了我之前的问题(一个SVN存储库或许多?)的答案后,我决定采用我拥有的4个左右的存储库并将它们合并为一个.这当然导致了一个问题,最好的方法是什么?
有没有办法组合两个或多个存储库来维护两者的版本历史记录?
编辑:我还应该指出我正在使用Assembla.com,它不提供对svnadmin命令的访问,AFAIK
另一个编辑:这甚至不重要吗?如果svnadmin适用于URL,那么就没问题了.
编辑:哦,问题编辑是在我打字时进行的.这是一个答案
有没有办法组合两个或多个存储库来维护两者的版本历史记录?
假如说
现有的存储库具有如下结构:
存储库根
分支机构
标签
树干
你想要一个类似的结构:
存储库根
了projectA
分支机构
标签
树干
项目B
分支机构
标签
树干
然后为每个项目存储库:
svnadmin dump > project.dmp
然后为每个转储文件:
svn mkdir "/project " svnadmin load --parent-dir "project "
更复杂的操作是可能的,但这是最简单,最直接的.转储期间改变源库结构/负载造成危险,但通过可行的组合svnadmin dump
,svndumpfilter
,手工编辑或附加的文本过滤器和svnadmin load
与第三方提供商打交道
请求svnadmin dump
每个存储库的文件.提供者应该愿意/能够提供这个 - 这是 你的代码!
在本地创建SVN存储库.
对转储文件执行上面列出的操作.
使用您喜欢的客户端验证存储库结构是否正确.
为组合的存储库创建转储文件.
请求提供程序从此转储文件填充新存储库.
YMMV:这似乎是一种合理的方法,但我从未与这样的第三方提供商合作过.
使用Subversion 1.7,您现在可以远程执行转储.也就是说,无需访问本地文件系统和svnadmin dump
命令.
您可以使用它svnrdump
来获取远程存储库的完整转储.有关语法详细信息,请参阅文档
请注意,服务器不必运行1.7,只需运行客户端.
http://svnbook.red-bean.com/en/1.7/svn.ref.svnrdump.c.dump.html
是的,使用svnadmin dump和svnadmin load.
让我们假设您需要存储库,一个使用HEAD修订版100,另一个使用HEAD修订版150.
您转储第一个存储库并将其加载到新存储库中:最终得到第一个存储库的完整故事,从版本0到版本150.
然后转储第二个存储库并将其加载到新存储库中:它将加载其完整历史记录,唯一改变的是实际修订版本号.第二个存储库的历史记录将在新版本的存储库中表示,从版本151到版本250.
两个存储库的完整历史记录都是preserver,只有为第二个导入的存储库更改了修订号.
当然,同样适用于两个以上的存储库.
编辑:我在你编辑的时候贴了,所以我没看到你的笔记......