在考虑了上一个问题 ( One SVN Repository or many? ) 的答案后,我决定将我拥有的 4 个左右存储库合并为一个。这当然引出了一个问题,最好的方法是什么?
有没有办法组合两个或多个存储库来维护两者的版本历史记录?
编辑:我还应该指出,我正在使用 Assembla.com,它不提供对 svnadmin 命令的访问,据我所知
另一个编辑:这还重要吗?如果 svnadmin 可以处理 URL,那就没问题了。
最佳答案
编辑:哦,好吧,问题编辑是在我打字时进行的。这是一个答案
<小时/>Is there a way to combine two or more repositories maintaining the version history for both?
假设
现有存储库的结构如下:
- 存储库根目录
- 分支机构
- 标签
- 树干
你想要一个类似的结构:
- 存储库根目录
- 项目A
- 分支机构
- 标签
- 树干
- 项目B
- 分支机构
- 标签
- 树干
- 项目A
然后对于每个项目存储库:
svnadmin dump > project<n>.dmp
然后对于每个转储文件:
svn mkdir "<repo url>/project<n>"
svnadmin load --parent-dir "project<n>" <filesystem path to repos>
更复杂的操作是可能的,但这是最简单、最直接的。在转储/加载期间更改源存储库结构是危险的,但可以通过 svnadmin dump
、svndumpfilter
、手动编辑或其他文本过滤器和 svnadmin 的组合来实现加载
与第三方提供商打交道
- 为每个存储库请求
svnadmin dump
文件。提供商应该愿意/能够提供此信息 - 它是您的代码! - 在本地创建 SVN 存储库。
- 对转储文件执行上面列出的操作。
- 验证您最喜欢的客户端的存储库结构是否正确。
- 为组合存储库创建转储文件。
- 请求提供商从此转储文件填充新的存储库。
YMMV:这似乎是一个合理的方法,但我从未与这样的第三方提供商合作过。
关于svn - 将多个 SVN 存储库合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/267256/