在Win7框上读取时,在winXP框中创建的提交消息会生成警告。
我的名字包含特殊字符(ö),我想这是问题的根源,因为我的名字在提交中。
我在尝试隐藏在winXP上创建的提交上的更改时看到了这个问题:
Warning: commit message does not conform to UTF-8.
我想检查一下使用什么编码来生成winXP上的提交,但找不到如何。
$ git config --get i18n.commitencoding
两台机器都返回空白。
http://www.kernel.org/pub/software/scm/git/docs/git-commit.html似乎说git会检查提交对象中的编码。
git log,git show,git blame和 朋友们看看编码头 一个提交对象,并尝试重新编码 将日志消息转换为UTF-8,除非 否则指定。
那很好,但是为什么git会抱怨win7而不是winXP?
msysgit版本在两台机器上都是相同的:1.7.4.msysgit.0。
答案 0 :(得分:0)
只是一个疯狂的猜测,但我最近在Rakefile中的某个人的名字中出现了类似的问题,我实际上不得不改变我的CMD环境的编码来运行它。
请看这个维基上的第二步:
https://github.com/NancyFx/Nancy/wiki/Having-trouble-with-rake%3F
chcp命令的Microsoft文档在这里: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/chcp.mspx?mfr=true
答案 1 :(得分:0)
现代Git(2019)更好地支持使用i18n.commitEncoding,但只有Git 2.25(2020年第一季度)提供了全面的支持:处理在{{1}期间使用非UTF-8编码的提交对象}”已得到改进。
请参见commit 52f52e5,commit 5772b0c(2019年11月11日),commit b375744,commit 019a9d8,commit 0798d16,commit e4b95b3,commit 1ba6e7a (2019年11月8日)和commit 99b2ba3的Doan Tran Cong Danh (congdanhqx-zz
)(2019年11月7日)。
(由Junio C Hamano -- gitster
--在commit 6511cb3中合并,2019年12月1日)
sequencer
:重新编码旧的合并提交消息签名人:Doan Tran Cong Danh
在重新定基期间,旧合并的消息(以旧编码编码)将用作新合并提交的消息(由rebase创建)。
如果在旧合并时间之后
rebase -i
的值已更改。对于新合并,我们将收到一条不可用的消息。更正它。
sequencer
:重新编码为utf-8,然后安排重新定位的待办事项列表签名人:Doan Tran Cong Danh
在
musl libc
上,ISO-2022-JP编码器过于急切,无法切换回1字节编码,i18n.commitencoding
的{{1}}总是在每个组合字符后切换回。
比较此命令的musl
和iconv
的输出glibc
尽管
musl
的输出并非最佳,但仍然正确。来自commit 7d509878b8(“
pretty.c
:具有截断方面$ sed q t/t3900/ISO-2022-JP.txt| iconv -f ISO-2022-JP -t utf-8 `|` iconv -f utf-8 -t ISO-2022-JP | xxd glibc: 00000000: 1b24 4224 4f24 6c24 5224 5b24 551b 2842 .$B$O$l$R$[$U.(B 00000010: 0a . musl: 00000000: 1b24 4224 4f1b 2842 1b24 4224 6c1b 2842 .$B$O.(B.$B$l.(B 00000010: 1b24 4224 521b 2842 1b24 4224 5b1b 2842 .$B$R.(B.$B$[.(B 00000020: 1b24 4224 551b 2842 0a .$B$U.(B.
的格式字符串”,2014-05-21,Git v2.1.0-rc0-merge中列出batch #3),我们首先将消息编码为utf-8,然后将其格式化并将其转换为git commit --squash
上的实际输出编码。因此,
musl iconv
在logOutputEncoding
上失败。在安排rebase的待办事项列表之前将其重新编码为utf-8。
configure.ac
:必要时定义t3900::test_commit_autosquash_flags
签名人:Doan Tran Cong Danh
来自commit 79444c9294(“
musl libc
:处理不为UTF-16编写BOM的系统”,2019-02-12,Git v2.21.0-rc1-merge batch #0中列出),我们将通过ICONV_OMITS_BOM
支持这些系统,以省略BOM:utf8
但是,没有教配置脚本来检测那些系统。
请教配置以执行此操作。