Git 2.37 源代码控制发布

分布式源代码控制系统 Git 2.37 已发布。 Git 是最流行、可靠和高性能的版本控制系统之一,提供基于分支和合并的灵活的非线性开发工具。 为了确保历史记录的完整性和对追溯更改的抵抗力,在每次提交中都会使用整个先前历史记录的隐式哈希;还可以使用开发人员的数字签名来验证各个标签和提交。

与上一版本相比,新版本接受了 395 处变更,75 位开发者参与准备,其中 20 位开发者是首次参与开发。 主要创新:

  • 部分索引(稀疏索引)机制仅覆盖存储库的一部分,已准备好广泛使用。 部分索引可以提高执行部分克隆(稀疏签出)操作或使用存储库的不完整副本的存储库的性能并节省空间。 新版本完成了将部分索引集成到 git show、git稀疏-checkout 和 git stash 命令中。 使用部分索引最显着的性能优势是使用 git stash 命令,在某些情况下执行速度提高了 80%。
  • 已经实现了一种新的“cruft packs”机制,用于打包存储库中未引用的无法访问的对象(未由分支或标签引用)。 无法访问的对象由垃圾收集器删除,但在删除之前会在存储库中保留一段时间,以避免竞争情况。 为了跟踪不可达对象的出现周期,需要给它们附加类似对象的变化时间的标签,这不允许将它们存储在一个所有对象都有共同变化时间的包文件中。 以前,当存在大量新的、无法访问且尚不符合删除条件的对象时,将每个对象保存在单独的文件中会导致出现问题。 所提出的“cruft packs”机制允许您将所有无法访问的对象存储在一个包文件中,并将每个对象的修改时间数据反映在存储在扩展名为“.mtimes”的文件中的单独表中。
  • 对于 Windows 和 macOS,有一个内置机制用于跟踪文件系统的更改,允许您在执行“git status”等操作时避免迭代整个工作目录。 以前,为了跟踪更改,可以通过钩子连接用于跟踪 FS 中更改的外部实用程序(例如 Watchman),但这需要安装额外的程序和配置。 现在指定的功能是内置的,可以使用命令“git config core.fsmonitor true”启用。
  • 在“git稀疏-checkout”命令中,支持“-cone”模式的替代方案,即定义部分克隆模板的方法,已被声明为过时,这允许在确定存储库中受约束的部分时克隆操作,使用“.gitignore”语法列出单个文件,该语法不允许用于优化部分索引。
  • 提高了配置 fsync() 调用以将更改刷新到磁盘的灵活性。 “core.fsyncMethod”参数中添加了对“批量”同步策略的支持,该参数允许通过累积回写缓存中的更改(由单个 fsync() 重置)来加快写入大量单个文件时的工作速度称呼。 该测试使用“git add”命令添加了 500 个文件,在启用新模式时在 0.15 秒内完成,而调用 fsync() 每个文件需要 1.88 秒,并且不使用 fsync - 0.06 秒。
  • 像“git log”和“git rev-list”这样的分支遍历命令现在有一个选项“-since-as-filter=X”,它允许您过滤掉有关早于“X”的提交的信息。 与“--since”选项不同,新命令作为过滤器实现,在第一次提交早于指定时间后不会停止搜索。
  • 在“git remote”命令中,当指定“-v”标志时,会显示有关存储库的部分克隆的信息。
  • 添加了“transfer.credentialsInUrl”设置,可以取值“warn”、“die”和“allow”。 如果在参数“remote. .url”纯文本凭据,如果“transfer.credentialsInUrl”设置设置为“die”,则尝试执行“fetch”或“push”操作将失败并出现错误,如果设置为“warn”,则会出现警告。
  • 默认情况下,启用“git add -i”命令交互模式的新实现(从 Perl 重写为 C)。

来源: opennet.ru

添加评论