推出 新版本 git 2.37, 这是其中之一 最流行的版本控制系统、可靠、高性能的软件,提供基于分叉和分叉合并的灵活的非线性开发工具。
为确保历史完整性和抗更改性,每次提交都使用所有先前历史的“向后”隐式哈希,还可以验证单个标签和提交开发人员的数字签名。
Git 2.37关键新功能
与以前的版本相比, 新版本接受了 395 处更改, 75 位开发者参与筹备,其中 20 位是首次参与开发。
在此新版本中,突出显示了 部分指数机制 (稀疏索引),它只覆盖存储库的一部分,se 已准备好广泛使用. 部分索引可以在执行部分克隆操作(稀疏签出)或对存储库的不完整副本进行操作的存储库中提高性能并节省空间。
新版本完成了工作 在命令中集成部分索引 “git show”、“git sparse-checkout”和“git stash”. 使用部分索引最显着的性能提升是在“git stash”命令中,在某些情况下速度提高了 80%。
另一个引人注目的变化是 实施了新的“cruft packs”机制 打包存储库中未引用的无法访问的对象(分支或标签未引用)。 垃圾收集器会删除无法访问的对象,但它们会在存储库中保留一段时间,然后再删除它们以避免竞争条件。 为了跟踪不可达对象的周期,需要绑定,它们被标记为相似对象的更改时间,这不允许它们存储在一个捆绑文件中,其中所有对象都有一个共同的修改时间。
将每个以前使用的对象保存在一个单独的文件中,该文件在存在大量新的无法访问的对象时会导致问题,目前还没有。 提议的“cruft packs”机制允许将所有无法访问的对象存储在一个捆绑文件中,并且每个对象的修改时间数据反映在一个单独的表中,该表存储在扩展名为“.mtimes”的文件中。
对于 Windows 和 macOS,有一个内置机制 跟踪对文件系统的更改,其中 无需列出整个工作目录 在执行诸如“git status”之类的操作时。 以前,要通过挂钩跟踪更改,您可以连接外部文件系统更改跟踪实用程序,例如 Watchman,但这需要安装额外的程序和配置。 此功能现在已内置并可通过“git config core.fsmonitor true”启用。
命令 “git sparse-checkout”已放弃对“--cone”模式替代方案的支持 部分克隆的模板定义,它允许在定义受克隆操作影响的存储库部分时,使用“.gitignore”语法列出单个文件,这不允许用于优化部分索引。
其他变化 脱颖而出:
- 提高了配置 fsync() 调用以将更改刷新到磁盘的灵活性。
- 在“core.fsyncMethod”参数中添加了对“batch”同步策略的支持,通过在单个 fsync() 调用刷新的重写缓存中累积更改来加快写入大量单独文件时的工作。
- 诸如“git log”和“git rev-list”之类的遍历命令现在具有“–since-as-filter=X”选项来过滤有关早于“X”的提交的信息。
- 在“git remote”命令中,指定“-v”标志提供有关存储库部分克隆的信息。
- 新增“transfer.credentialsInUrl”设置,可以取值“warn”、“die”、“allow”。 如果参数“remote. .url”以纯文本形式指定凭据,如果“transfer.credentialsInUrl”设置设置为“die”,则尝试执行“get”或“push”操作将失败,或者如果设置为“warn”则发出警告。
- 默认情况下,使用从 Perl 重写为 C 的“git add -i”命令的新交互模式实现。
最后 如果您有兴趣了解更多有关它的信息,您可以查看详细信息 在下面的链接中。