当前位置:  开发笔记 > 前端 > 正文

将多个SVN存储库合并为一个

如何解决《将多个SVN存储库合并为一个》经验,为你挑选了3个好方法。

在考虑了我之前的问题(一个SVN存储库或许多?)的答案后,我决定采用我拥有的4个左右的存储库并将它们合并为一个.这当然导致了一个问题,最好的方法是什么?

有没有办法组合两个或多个存储库来维护两者的版本历史记录?

编辑:我还应该指出我正在使用Assembla.com,它不提供对svnadmin命令的访问,AFAIK

另一个编辑:这甚至不重要吗?如果svnadmin适用于URL,那么就没问题了.



1> Ken Gentle..:

编辑:哦,问题编辑是在我打字时进行的.这是一个答案

有没有办法组合两个或多个存储库来维护两者的版本历史记录?


假如说

现有的存储库具有如下结构:

存储库根

分支机构

标签

树干

你想要一个类似的结构:

存储库根

了projectA

分支机构

标签

树干

项目B

分支机构

标签

树干

然后为每个项目存储库:

svnadmin dump > project.dmp

然后为每个转储文件:

svn mkdir "/project"
svnadmin load --parent-dir "project" 

更复杂的操作是可能的,但这是最简单,最直接的.转储期间改变源库结构/负载造成危险,但通过可行的组合svnadmin dump,svndumpfilter,手工编辑或附加的文本过滤器和svnadmin load


与第三方提供商打交道

请求svnadmin dump每个存储库的文件.提供者应该愿意/能够提供这个 - 这 你的代码!

在本地创建SVN存储库.

对转储文件执行上面列出的操作.

使用您喜欢的客户端验证存储库结构是否正确.

为组合的存储库创建转储文件.

请求提供程序从此转储文件填充新存储库.

YMMV:这似乎是一种合理的方法,但我从未与这样的第三方提供商合作过.


在运行"svnadmin load --parent-dir"{project [n]}"{filesystem path to repos} <{filesystem path to dmp}"之前,请确保在目标存储库中创建一个空的"project "目录.
正如Aaron所提到的,您需要在运行svnadmin load --parentdir之前在目标库中创建一个空项目目录.这可以通过"svn mkdir {repo url}/{project [n]}"来完成.

2> Scott Coldwe..:

使用Subversion 1.7,您现在可以远程执行转储.也就是说,无需访问本地文件系统和svnadmin dump命令.

您可以使用它svnrdump来获取远程存储库的完整转储.有关语法详细信息,请参阅文档

请注意,服务器不必运行1.7,只需运行客户端.

http://svnbook.red-bean.com/en/1.7/svn.ref.svnrdump.c.dump.html



3> Davide Guala..:

是的,使用svnadmin dump和svnadmin load.

让我们假设您需要存储库,一个使用HEAD修订版100,另一个使用HEAD修订版150.

您转储第一个存储库并将其加载到新存储库中:最终得到第一个存储库的完整故事,从版本0到版本150.

然后转储第二个存储库并将其加载到新存储库中:它将加载其完整历史记录,唯一改变的是实际修订版本号.第二个存储库的历史记录将在新版本的存储库中表示,从版本151到版本250.

两个存储库的完整历史记录都是preserver,只有为第二个导入的存储库更改了修订号.

当然,同样适用于两个以上的存储库.

编辑:我在你编辑的时候贴了,所以我没看到你的笔记......

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有