注意:注意 git config 小节:最近对“git config”的更新破坏了小节中的更新变量,已在 Git 2.19(2018 年第三季度)中更正。
这说明了节和小节之间的区别。
见commit bff7df7、commit 2d84f13(2018 年 8 月 8 日)和 commit 999d902(2018 年 8 月 1 日)Stefan Beller (stefanbeller)。
(由 Junio C Hamano -- gitster -- 合并于 commit 2a2c18f,8 月 20 日2018)
config:在写作时修复区分大小写的小节名称
一个用户报告了一个关于部分混淆的子模块问题,但它可以归结为以下测试用例:
$ git init test && cd test
$ git config foo."Bar".key test
$ git config foo."bar".key test
$ tail -n 3 .git/config
[foo "Bar"]
key = test
key = test
子部分区分大小写,我们对它们进行了正确阅读测试。
但是,我们没有使用区分大小写的小节名称正确写出配置的测试,这就是为什么在6ae996f(git_config_set:利用配置解析器的事件流,2018-04-09,Git 2.18 )
不幸的是,我们必须区分看起来像这样的旧式配置:
[foo.Bar]
key = test
和上面看到的新引用样式。
旧样式被记录为不区分大小写,因此我们需要保留 'strncasecmp';尽管旧样式配置的结果设置与配置不同。
确保使用 Git 2.19(如上所示),或者至少使用 Git 2.13 或更高版本。
没有记录的是git -c曾经小写变量名:
vonc@bvonc MINGW64 ~
$ git version
git version 2.12.0.windows.1
vonc@bvonc MINGW64 ~
$ git -c VAR=c config -l|grep var
var=c
在可变大小写很重要的操作系统上,这可能是一个问题(另请参见下面的 url 大小写)
此问题已在 Git 2.13(2017 年第二季度)中得到修复,并提供了节与小节之间差异的另一个说明。
参见Junio C Hamano (gitster) 的commit 1274a15 和commit ee98df3(2017 年 2 月 23 日)。
(由 Junio C Hamano -- gitster -- 合并到 commit 2f54451,2017 年 3 月 10 日)
config:在git_config_parse_parameter() 中使用git_config_parse_key()
解析配置变量的一次性赋值
来自命令行历史上是相当松散的并且被允许
有什么可以通过的。
它还对变量名中的所有内容进行了小写,
甚至是一个三级的<section>.<subsection>.<variable> 名称,其中
该部分必须以区分大小写的方式处理。
三级<section>.<subsection>.<variable> 名称的示例,无论操作系统在设置 url 时,大小写都很重要:
vonc@bvonc MINGW64 ~
$ git -c url."https://myserver/GitLab".insteadOf=git@myserver.org/GitLab config -l|grep -i Gitlab
url.https://myserver.org/gitlab.insteadof=git@myserver.org/GitLab
如果您的私有 Git 存储库服务器 URL 不是完全小写...该命令将不起作用。
而scheme of an url might be case insensitive,如well as the domain,其余的url(这里是/GitLab部分)can be case sensitive。