发布分布式源码控制系统Git 2.26

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

与之前版本相比,新版本包含 504 处变更,由 64 名开发人员参与准备,其中 12 名开发人员首次参与开发。 创新:

  • 默认已切换为 第二个版本 Git通信协议,客户端远程连接Git服务器时使用的协议。 该协议的第二个版本值得注意的是,它提供了在服务器端过滤分支和标签的能力,并向客户端返回缩短的链接列表。 以前,任何 pull 命令都会向客户端发送整个存储库中的完整引用列表,即使客户端仅更新一个分支或检查其存储库副本是否是最新的。 另一个值得注意的创新是,随着工具包中出现新功能,能够向协议添加新功能。 客户端代码仍然与旧协议兼容,并且可以继续与新旧服务器一起工作,如果服务器不支持第二个版本,则自动回退到第一个版本。
  • “git config”命令中添加了“-show-scope”选项,可以更轻松地识别定义某些设置的位置。 Git 允许您在不同位置定义设置:在存储库 (.git/info/config) 中、在用户目录 (~/.gitconfig) 中、在系统范围的配置文件 (/etc/gitconfig) 中以及通过命令行选项和环境变量。 当执行“git config”时,很难理解所需设置的确切定义位置。 为了解决这个问题,可以使用“--show-origin”选项,但它只显示定义该设置的文件的路径,如果您打算编辑该文件,这很有用,但如果您想编辑该文件,则没有帮助。需要通过“git config”使用选项“--system”、“--global”或“-local”更改值。 新选项“--show-scope”显示变量定义上下文,可以与-show-origin结合使用:

    $ git --list --show-scope --show-origin
    全局文件:/home/user/.gitconfig diff.interhunkcontext=1
    全局文件:/home/user/.gitconfig push.default=current
    [...]本地文件:.git/configbranch.master.remote=origin
    本地文件:.git/configbranch.master.merge=refs/heads/master

    $ git config --show-scope --get-regexp 'diff.*'
    全局 diff.statgraphwidth 35
    局部差异颜色移动平原

    $ git config --global --unset diff.statgraphwidth

  • 在绑定设置中 证书 允许在 URL 中使用掩码。 Git 中的任何 HTTP 设置和凭据都可以针对所有连接(http.extraHeader、credential.helper)和基于 URL 的连接(credential.https://example.com.helper、credential.https://example.com)进行设置。 com.helper)。 到目前为止,仅允许在 HTTP 设置中使用 *.example.com 等通配符,但凭证绑定不支持使用通配符。 在 Git 2.26 中,这些差异被消除,例如,要将用户名绑定到您现在可以指定的所有子域:

    [凭证“https://*.example.com”]

    用户名= ttaylorr

  • 对部分克隆(部分克隆)的实验支持的扩展仍在继续,允许您仅传输部分数据并使用存储库的不完整副本。 新版本添加了一个新命令“git稀疏-checkout add”,它允许您添加单独的目录以将“checkout”操作仅应用于工作树的一部分,而不是通过命令“git”一次列出所有此类目录稀疏结帐集”(可以一一添加目录,无需每次重新指定整个列表)。
    例如,要克隆 git/git 存储库而不提交 blob,将签出限制为仅工作副本的根目录,并单独标记“t”和“Documentation”目录的签出,您可以指定:

    $ git clone --filter=blob:none --sparse [电子邮件保护]:git/git.git

    $ cd git
    $ git稀疏结帐初始化--cone

    $ git稀疏结帐添加t
    ....
    $ git稀疏结帐添加文档
    ....
    $ git稀疏结帐列表
    配套文档
    t

  • 用于搜索存储库当前内容和历史修订的“git grep”命令的性能已得到显着提高。 为了加快搜索速度,可以使用多个线程(“git grep –threads”)扫描工作树的内容,但历史修订中的搜索是单线程的。 现在,通过实现从对象存储并行读取操作的能力,这一限制已被消除。 默认情况下,线程数设置为等于 CPU 核心数,在大多数情况下,现在不需要显式设置“-threads”选项。
  • 添加了对“git worktree”命令的子命令、路径、链接和其他参数的自动完成输入的支持,这允许您使用存储库的多个工作副本。
  • 添加了对具有 ANSI 转义序列的亮色的支持。 例如,在突出显示颜色“git config –color”或“git diff –color-moved”的设置中,您可以通过“--format”选项指定“%C(brightblue)”为亮蓝色。
  • 添加了新版本的脚本 fsmonitor-watchman,提供与机制的集成 脸书守望者 加快文件更改和新文件出现的跟踪。 更新后需要git 替代 挂钩在存储库中。
  • 添加了优化以加快使用位图时的部分克隆速度
    (位图机制)以避免在过滤输出时对所有对象进行完整搜索。 现在执行部分克隆期间检查 blob(—filter=blob:none 和 —filter=blob:limit=n)
    明显更快。 GitHub 宣布了包含这些优化的补丁以及对部分克隆的实验性支持。

  • “git rebase”命令已移动到不同的后端,使用默认的“merge”机制(以前用于“rebase -i”)而不是“patch+apply”。 后端在一些小方面有所不同,例如,在解决冲突后继续操作(git rebase --continue)后,新后端提供编辑提交消息的功能,而旧后端仅使用旧消息。 要恢复到旧的行为,您可以使用“--apply”选项或将“rebase.backend”配置变量设置为“apply”。
  • 通过 .netrc 指定的身份验证参数的处理程序示例已简化为适合开箱即用的形式。
  • 添加了 gpg.minTrustLevel 设置来设置执行数字签名验证的各种元素的最低信任级别。
  • 为“git rm”和“git stash”添加了“--pathspec-from-file”选项。
  • 测试套件的改进仍在继续,为过渡到 SHA-2 哈希算法而不是 SHA-1 做准备。

来源: opennet.ru

添加评论