从Git 2.36(2022年第二季度)开始,您将有另一个选项来替代依赖于本地文件夹:使用“
[includeIf <condition>]
”的配置文件的条件包含机制学习基于与存储库交互的远程存储库的
URL来做出决策。
查看 提交 399b198, 提交 ed69e11 (2022年1月18日) 由 Jonathan Tan (jhowtan
) 完成。
(由 Junio C Hamano -- gitster
-- 合并在 提交 13ce8f9 中,2022年2月9日)
config
:如果远程URL匹配glob,则包含文件
署名:Jonathan Tan
确认者:Elijah Newren
这是一项支持配置文件包含的功能,条件是仓库是否有与通配符匹配的URL远程。类似于我之前关于
remote-suggested hooks的工作,主要目的是允许远程仓库管理员以更易于消费的方式提供推荐配置(例如通过包管理器安装的软件包 - 它可以包含一个要有条件地包含的文件和一个后安装脚本,将包含指令添加到系统范围的配置文件中)。为此,Git在注意到第一个URL条件包含时重新运行配置解析机制,以查找所有远程URL,并使用这些远程URL来确定是否执行第一个和所有后续包含。
不允许在任何URL条件包含的文件中配置远程URL。
config
现在在其man page中包括:
hasconfig:remote.*.url:
该关键字后面的数据被视为具有标准globbing通配符和两个额外的通配符**/
和/**
的模式,可以匹配多个组件。
第一次看到此关键字时,将扫描其余配置文件以查找远程URL(不应用任何值)。
如果存在至少一个与此模式匹配的远程URL,则满足包含条件。
通过此选项(直接或间接)包含的文件不允许包含远程URL。
请注意,与其他includeIf
条件不同,解析此条件依赖于在读取条件时尚未知的信息。
典型用例是此选项作为系统级别或全局级别配置出现,而远程URL位于本地级别配置中;因此需要在解析此条件时进行预先扫描。
为了避免可能包含的文件影响是否可能包含这些文件的循环问题,Git通过禁止这些文件影响这些条件的解决方法来打破循环(因此,禁止它们声明远程URL)。
至于此关键字的命名,它是为了向前兼容支持更多基于变量的包含条件的命名方案,但当前Git仅支持上述确切关键字。
config
现在在其手册页面中包括:
[includeIf "hasconfig:remote.*.url:https://example.com/**"]
path = foo.inc
[remote "origin"]
url = https://example.com/git
.git/config
)。您可以手动编辑该文件,或者在运行git config
时使用--local
标志。 - undefinedincludeIf
这个功能。这真是一个相当随机的特性! - undefined