我一直在开发一个没有 SVN 的项目,现在我希望使用 SVN。我一直将这个项目的许多修订版保存为一系列编号的 tar.bz2 文件(tarball)。我想将这些许多 tarball 导入 SVN 存储库并保持修订号同步(以便 tarball NNN 成为存储库修订 NNN)。这些版本有很多(几百个),因此不能全部手动完成。我将在 bash 和/或 Python 中自动执行此操作。版本序列中存在许多差距(大约 500 个版本上升到近 700 个)。有关如何执行此操作(SVN 功能)的任何建议?完成后,存储库应该看起来就像我一直在使用 SVN。只有这一项目将在这一存储库中。
问问题
88 次
1 回答
0
简而言之:你不能轻易做到,因为:
- SVN-repo 中的修订号是一系列连续的自然数,没有间隙(你不能在它之后立即提交 r500 和 r700)
- 对于有用的历史记录(不仅跟踪状态,还跟踪变化),你会很头疼(tm),用于检测和存储 WC 中的添加|删除|移动文件
如果你能找到p.2 的任何可自动化解决方案(我在纯 Subversion 中看不到它)和 p.1(获取有间隙的仓库),你可以尝试
- 承诺“按原样”回购所有档案,然后将整个回购转储到转储文件,编辑(手动?!)人类可读转储中的修订号并将转储加载到新的新鲜回购中
或者
- 在提交阶段创建间隙:提交与修订树的某些特殊部分无关的任何内容,在最终状态下不得存在,转储 repo 并排除垃圾树(svnadmin dump + svndumpfilter 或 svnrdump)并在新的新 repo 中恢复转储
PS - 我建议不要欺骗或欺骗(所有描述的技巧都可以相对容易和快速地暴露出来;不要暴露,但只是怀疑犯规就足够了):按原样提交档案,使用 tarball 的文件名作为导航和历史的自定义修订属性
于 2016-08-09T15:20:48.787 回答