从TFSVC迁移到GIT - 带有部分历史记录的代码库?

4
我们计划从TFSVC转移到git。我们当前的代码库已经存在了5年之久,包含大约78000个提交记录。目前我能够完成完整的克隆,但克隆体积巨大(大约10GB)。这个代码库将作为新git库的基础,并且作为旧代码研究的只读副本。
由于代码库太大,我们使用BFG进行清理,将其压缩至大约1GB,但仍然过大。我们目前使用发布分支,并且需要转移到新系统中的开发主干和最近几个发布分支。旧分支及其提交记录可以在10GB的代码库中查找。
是否可能通过日期戳截断新代码库的提交记录(也就是历史记录)?我们希望保留大约最近6个月的提交记录,以及最新的发布分支。
基本上,问题就是:当代码库变得很大时,如何进行维护?比如说,每两年只保留最近一年的提交记录。你如何实现这一点?
我已经尝试过浅克隆,但它无法保留分支。

1
你的代码库中是否包含二进制文件?1Gb 真的非常大(这不可能仅是源代码)。 - Ivan
是的,它包含一些二进制文件。许多可以在克隆后删除。此外,我还需要一个较小的提交历史记录,否则BFG和git filter-branch将永远无法完成。 - Michael Wagner
1个回答

0

正如我在 "是否可能根据日期时间进行浅层 Git 克隆?" 中提到的那样,使用 Git 2.11(即将发布:2016 年 11 月 22 日,目前已经有了预览版)是可以做到的。

git clone --shallow-since=<date>

(请参见{{link1:git clone手册页}}和{{link2:其测试}}。功能已在{{link3:提交994c2aa}}中实现)

关于分支,请参见“{{link4:git浅克隆(克隆--depth)错过远程分支}}”。但是,如果远程分支是从请求日期之前的提交开始的,则该分支不会进入浅克隆。


基本上问题就是:当你的git repo真正成长了几年后,你如何进行清理?我会为存档保留一个bundle,并将我想要的分支使用fetch --depth命令克隆到一个新的浅层克隆的repo中。

我已经做到了。我发现根据我使用的日期,存储库中的对象数量会多或少。但我仍然看到了整个历史记录。我该如何切割提交? - Michael Wagner
@MichaelWagner 你做了吗?这只在尚未发布的Git 2.11上可用。你使用了我提到的Git预览版吗?你在使用Windows系统吗? - VonC
是的,我下载了预览版并使用了它。 - Michael Wagner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接