发布分布式源代码控制系统Git 2.31

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

与之前版本相比,新版本包含 679 处变更,由 85 名开发人员参与准备,其中 23 名开发人员首次参与开发。 主要创新点:

  • 添加了“git Maintenance”命令,该命令允许您在不支持 cron 的系统上执行定期工作。 例如,使用新命令,您可以安排存储库打包过程定期运行,这样在运行各种命令时就可以自动执行打包,而不必等到存储库被锁定。 “git Maintenance”命令允许您执行优化和操作,以在后台维护存储库的最佳结构,而不会阻塞交互式会话 - 每小时一次,主动从远程存储库下载新对象并更新存储库包含提交图的文件,并且打包存储库的过程每天晚上都会开始。
  • 添加了对在磁盘上维护包文件的反向索引 (revindex) 的支持。 回想一下,Git 以对象的形式存储所有数据,这些数据位于单独的文件中。 为了提高使用存储库的效率,对象另外放置在包文件中,其中信息以对象流的形式呈现,这些对象相互跟随(使用 git fetch 和 git push 传输对象时使用类似的格式)命令)。 对于每个包文件,都会创建一个索引文件 (.idx),它允许您使用对象标识符快速确定包文件中存储给定对象的偏移量。 Git 2.31 中引入的反向索引 (.rev) 旨在优化根据包文件中对象的放置信息确定对象标识符的过程。

    以前,这种转换是在解析包文件时动态执行的,并且仅存储在内存中,这不允许重复使用类似的索引,并且每次都会强制生成索引。 构建索引的操作归结为构建对象位置对的数组并按位置对其进行排序,这对于大型包文件来说可能需要很长时间。

    例如,使用直接索引显示对象内容的操作比未对位置到对象数据建立索引的显示对象大小的操作快 62 倍。 使用反向索引后,这些操作开始花费大约相同的时间。 反向索引还允许您在执行获取和推送命令时通过直接从磁盘传输现成的数据来加速对象发送操作。 默认情况下,不会创建反向索引;要生成反向索引,您需要启用“git config pack.writeReverseIndex true”设置,然后使用“git repack -Ad”命令打包存储库。

  • 添加了基于提交图文件格式外观的性能优化,用于优化对有关提交的信息、有关提交生成编号的新数据的访问,可用于加速提交的其他操作。
  • 添加了用于重新定义新存储库中默认使用的主分支名称的选项(init.defaultBranch 设置)。 当访问外部存储库时,git 会尝试检查 HEAD 指向的分支,即如果外部服务器默认使用“main”分支,那么“git clone”操作将尝试在本地检出“main”。 Git 2.31 现在支持这种类型的空存储库签出。 例如,在向其添加第一个补丁之前在本地克隆新存储库时,本地副本现在将包含外部服务器上设置的默认上游名称。
  • 在“git rev-list”命令中添加了 --disk-usage 选项,以提供对象大小的摘要。
  • 考虑到合并后端即将发生的变化,重命名检测已得到显着优化。
  • 对旧版 PCRE1 正则表达式库的支持已停止。
  • 无论散列算法如何,都可以强制禁止使用缩短的链接。 通过将值“no”分配给 core.abbrev 参数来启用禁止。
  • 在“git rev-parse”命令中添加了“--path-format=(absolute|relative)”选项,以明确指定是否应输出相对路径或绝对路径。
  • Bash 完成脚本可以轻松地为您自己的“git”子命令添加完成规则。
  • 向“git bundle”命令添加了 --stdin 选项,以从标准输入流读取引用。
  • “git log”命令中添加了一个新选项:“--diff-merges=” ”
  • 在“git ls-files”命令中添加了“--deduplicatecan”选项以消除重复输出。
  • 添加了新的掩码以排除一系列提交 - ” ^!” 和 ” ^- ”
  • 在“git range-diff”命令中添加了“--left-only”和“--right-only”选项,以仅显示正在比较的范围的一侧。
  • 向“git diff”和“git log”命令添加了 --skip-to= 选项“和”——旋转至= » 跳过或移至起始路径的末尾。
  • 在“git difftool”命令中添加了“--skip-to=”选项» 从随机路径恢复中断的会话。
  • 行为准则定义了解决开发人员之间冲突情况的基本原则,已更新至 2.0 版(之前使用的是 1.4 版)。

    来源: opennet.ru

添加评论