git svn逐步获取旧历史
2017年9月8日git svn克隆时可选择从svn的哪次提交开始克隆。如果svn仓库很大,git svn克隆就很慢。我们一般都会获取最近的svn历史,然后就开始工作。那么能不能在闲暇时间继续获取更久远的历史呢?本文提供一些方法。
方法一:变基
git svn先克隆最近的历史,如-r 29999:30010,假设30010为HEAD。设这个仓库为新仓库。
git svn克隆旧历史,如-r 20000:29998。设这个仓库为旧仓库。
当新仓库想要旧历史时,创建一个分支备份当前历史,新仓库开启后台服务进程,在旧仓库添加一个远端为新仓库,从中获取。
现在旧仓库有两个分支,分支A有r29999:30000,分支B有r20000:29998。这两个分支的第一个提交包含了那个版本的所有文件。
现在把分支A变基到分支B。处理r29999时会有冲突,选择采取分支A。其他后续提交的处理非常快。
现在分支A就有r20000:30010。
最后可以删除新仓库,因为旧仓库已经获得了旧历史。如果想要获取更多的旧历史,就再创建一个仓库按此法操作。
这个方法的缺点是,变基一定会产生不同的SHA1,因为SHA1不仅跟文件内容有关,还跟来源有关。
方法二:替换
Pro Git介绍到,可以使用git replace命令。