Git 2.52 的新特性:命令、性能和安全性

  • 新增命令:git last-modified、git repo 以及对 git refs 的常用操作的补充。
  • 改进维护:git 维护中的几何任务和多项性能优化。
  • 安全改进正在进行中:迈向 SHA-1/SHA-256 互操作性的第一步,并在下一个主要版本中将默认值更改为“main”。
  • 更多实用工具:改进了布隆过滤器、稀疏检出清理功能,以及提交图、暂存和差异树中的新功能。

吉特2.52

Git 2.52 现在可用 作为对这款流行的分布式版本控制系统的稳定更新。该版本包含 新增功能、维护调整和性能改进 这是 94 位以上合作者共同努力的成果,其中 33 位是首次参与该项目。

其中最显著的变化包括用于浏览代码库的新子命令、更智能的维护工作流程以及向 SHA-256 过渡的进展。所有这些都以一致且低调的方式呈现。 实用方法 管理各种规模的存储库。

用于浏览仓库的 git 2.52 新命令

最引人注目的新奇之处是 git last-modified旨在高效地获取每个路径上的最新提交。在条目众多的仓库中,这种方法避免了重复的历史遍历,并且可以…… 比使用 ls-tree + log 链式调用快好几倍根据内部测试,在实际场景中,将时间从秒级缩短到毫秒级。

引擎 last-modified 它是在 GitHub 上以这个名称历经数年开发的。 责备树自 2012 年以来,他们一直在推卸责任,将责任归咎于树木本身。随后, GitLab工程师 他们完善了补丁集,使其能够集成到 Git 2.52 中,尽管仍有一些功能需要添加,例如: 磁盘格式以缓存结果 参考之前的执行情况。

实验品也到了。 git repo一个用于查询存储库功能的伞形工具。 git repo info 你能判断它是不是吗? o 对象和引用的格式,以及与 git repo structure 已打印 结构统计 (提交计数、树、blob、分支、标签等)。此外, info 包含缩写选项 -z 并且有能力 报告对象格式 用过的。

对于那些从事低级别工作且有推荐人的人来说, git refs SUMA git refs list (别名 git for-each-ref)Y git refs exists (如同 git show-ref --exists它们并不具备前所未有的能力,但是 他们集中进行频繁操作 单个命令下的多个引用。

小巧但实用:现在 git cmd --help-all 它也有效 在存储库之外这样一来,无需进行任何初始化即可轻松访问全局帮助。

维护和性能

Git 2.52 引入了一个任务 geometricgit maintenance 它尽可能避免一次性重新打包,并减少对不可达对象的清理频率。该任务检查包以形成一个 按物体数量划分的等比数列 并在适当情况下进行压实,无需修剪;如果操作最终会得到一个单独的包装,则执行 git gc 完全用于合并和精简。

就速度而言,已经取得了显著进步: git describe 它现在使用优先级队列,并获得了大约 100% 的收益。 30% 性能; git remote rename 优化引用重命名; git ls-files 它使指数在更多情况下保持分散; git log -L 它避免了合并过程中某些树级差异,从而加快了分析速度;并且该库 xdiff 它融合了多项优化措施, 差异比较和合并功能得到改进 在文件级别。

安全性和 Git 3.0 路线图

从 SHA-1 到 SHA-256 的过渡仍在继续。SHA-256 的首批元素出现在 2.52 版本中。 算法间的互操作性目标是让具有不同哈希值的仓库能够无缝交换变更。这目前还处于基础阶段,但为下一个主要版本奠定了基础。

Git 3.0 计划进行的另一项更改是将默认分支命名为“main”。这项更改从 2.52 版本开始就已经包含在内了。 线索和帮助信息 为了促进这种改变,任何想要领先一步的人都可以使用该标志进行编译。 WITH_BREAKING_CHANGES 测试计划行为。

它还包含一个可选的、受保护的 Rust 代码。 WITH_RUST它实现了变长整数的编码/解码。在这个版本中,它不是必需的,Git 2.52 无需 Rust 编译器也能工作,但是…… 预计 Git 3.0 将需要它 并扩展重写后的内容。

工作流程和可用性方面的改进

使用 更改路径的布隆过滤器一种概率过滤器,可通过缩小路线范围来加快行程速度。现在即使在以下情况下也会使用它们: 路径规范 它包含 部分通配符 (例如, foo/bar/*/baz)以及在有多条感兴趣路径的场景中,有利于诸如以下查询: last-modified 以及一些历史记录命令。

git sparse-checkout 添加操作 clean 为了解决当感兴趣区域的定义发生变化时,某些文件会被排除在选择范围之外的情况,只需一步即可完成。 清理工作树 去除不需要的成分。

其他有用的新增内容:新变量 commitGraph.changedPaths 默认启用 --changed-paths en git commit-graph; 选项 stash.indexgit stash pop/apply 其行为如同使用以下方式调用: --index; git diff-tree 接收 --max-depth; git fast-import 现在 管理已签名标签,而 git repo info 除了支持之外,还要学习如何报告对象格式。 -z.

Git 2.52 可用

可以从以下位置下载 Git 2.52 的源代码: 官方网站 需要本地编译。应该会在未来几天或几周内完成。 主要发行版的存储库 欧洲的 GNU/Linux(Debian、Ubuntu、Fedora、openSUSE、Arch 等)已经有了像 Homebrew、MacPorts 或 Chocolatey 这样的管理工具,打包时间也与往常一样。

通过此次发布,Git 加强了其日常操作。 更快更实用的命令更精简的维护流程以及向 SHA-256 过渡的首批构建模块现已作为默认分支“main”发布。升级用户现在可以进行测试。 git last-modifiedgit repo几何任务 git maintenance 以及其他一些调整,这些调整无需大动干戈,就能让小型和大型存储库的体验都更加流畅。

GitLab Duo 代理
相关文章:
GitLab Duo Agent 平台:与 AI 代理协作的 DevSecOps 新时代