Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git:在user.email配置中使用非电子邮件字符串是否有效(并且可能是向前兼容的)?_Git - Fatal编程技术网

Git:在user.email配置中使用非电子邮件字符串是否有效(并且可能是向前兼容的)?

Git:在user.email配置中使用非电子邮件字符串是否有效(并且可能是向前兼容的)?,git,Git,以下工作: $ git config --local user.email "icq: 1234" $ git commit --allow-empty -m "test" [master 6d21d58] test $ git cat-file -p HEAD tree 6ef19b41225c5369f1c104d45d8d85efa9b057b53b14b4b9b939dd74decc5321 parent 3ea7111c6fda5a46bf1

以下工作:

$ git config --local user.email "icq: 1234"

$ git commit --allow-empty -m "test"
[master 6d21d58] test

$ git cat-file -p HEAD
tree 6ef19b41225c5369f1c104d45d8d85efa9b057b53b14b4b9b939dd74decc5321
parent 3ea7111c6fda5a46bf1ccfd9193d483facb29356d7d9c833c54ba95265c58c55
author John Doe <icq: 1234> 1614734711 +0100
committer John Doe <icq: 1234> 1614734711 +0100

test
$git config--local user.email“icq:1234”
$git commit--允许空-m“test”
[master 6d21d58]测试
$git cat文件-p头
树6EF19B41225C5369F1C104D45D8D85EFA9B057B53B14B9B939DD74DECC5321
母3ea7111c6fda5a46bf1ccfd9193d483facb29356d7d9c833c54ba95265c58c55
作者John Doe 1614734711+0100
提交人John Doe 1614734711+0100
测试

我的问题是这是否得到git的正确支持,还是这是一种未定义的行为,假设由user.email生成的提交不是有效的电子邮件字符串,在git的未来版本中仍然是有效的git提交是否合理?

git在
user.email
字段上非常宽松,因为电子邮件地址的生成非常复杂,实现真正的解析器将非常困难在没有某种生成器的情况下,C语言很难实现。因此,这种语法目前已经被接受,并且由于这个原因,它可能在将来继续被接受

然而,许多其他使用Git的工具和语言确实假定它是一个可交付的电子邮件地址。例如,如果您使用GitHub,它会根据您的电子邮件地址将提交与您的帐户相关联,您需要通过向其发送邮件来验证该地址,因此这些值不会被接受

此外,空白也带来了一个问题,因为Git在很多情况下使用
.mailmap
重写旧的或不正确的名称和电子邮件地址。Git或解析该格式的各种工具可能不会很好地接受这种语法,因此最好不要这样做。虽然如果Git本身在解析带有空格的电子邮件地址时遇到问题,可能会为Git发布补丁,但一般来说,许多人的假设(尽管不正确)是电子邮件地址不包含空格


因此,虽然Git接受这一点,但在大多数情况下,我不会指望它继续稳健地工作。如果您可以在这种情况下将ICQ地址重写为电子邮件地址,那就更好了。

我认为git并不特别在意,但我认为可能有很多外部工具希望此信息成为电子邮件地址。特别是,在该字段中使用空格可能会在某些时候导致令人不快的惊喜,这取决于工具编写的健壮程度。