git svn逐步获取旧历史

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命令。

发表评论

电子邮件地址不会被公开。

 剩余字数

ea dz dy dx dw dv du dt ds dr dq dp dn dm dl dk dj di dh dg df de dd dc da cz cy cx cw cv cu ct cs cr cq cp co cn cm cl ck cj ci ch cg cf ce cd cc cb ca bz bx bw bv bu bt bs br bq bp bo bn bm bl bk bj bi bh bg bf bd bc bb ba az ay ax aw av au ar aq ap ao am al ak aj ai ah ag af ae ad ac ab /跳跳 /抓狂 /快哭了/ /微笑/ /奋斗 /呲牙/ /吐