Git 2.55的亮点

开源Git项目刚刚发布了Git 2.55。以下是GitHub自上次以来推出的一些最有趣的功能和更改。Git 2.55的亮点文章首先出现在GitHub博客上。

Taylor Blau是GitHub的首席软件工程师,他在Git上工作。开源Git项目刚刚发布了Git 2.55,其中包含来自100多位贡献者的功能和错误修复,其中33位是新贡献者。当2.54发布时,我们最后一次在Git中了解到最新的信息。为了庆祝这个最新版本,以下是GitHub自上次以来推出的一些最有趣的功能和变化。

使用增量多包索引重新打包本系列的返回读者可能还记得我们对增量多包索引和增量多包可达性位图的覆盖范围。如果您需要复习,这里是简短的版本。Git将存储库的内容存储为单个对象:提交、树和blob。这些对象通常存在于packfiles中, packfiles是对象的压缩集合。

Packfile具有相应的pack索引,允许Git快速定位包中的任何对象。但是,大型存储库通常不会只有一个包文件:随着时间的推移,提取、推送、维护任务和重新打包可能会留下许多包。多包索引(或MIDX )为Git提供了多个包的单个索引。

Git可以询问MIDX哪个包包含给定对象以及在哪个偏移处,而不是打开和搜索每个包的单个索引。这对于大型存储库尤其有用,是GitHub存储库维护策略背后的构建块之一。

正如我们在Git 2.47引入增量MIDX格式时所介绍的那样,存储库可以将其MIDX存储为层链,而不是作为覆盖每个包的单个MIDX。单文件MIDX读取简单高效,但它具有重要的维护成本;由于该文件包括其覆盖的每个包,因此即使是小的更新也可能需要在已经很大的存储库中进行大量写入。