Git别名中的Unicode
Posted
技术标签:
【中文标题】Git别名中的Unicode【英文标题】:Unicode in Git alias 【发布时间】:2015-11-08 02:38:17 【问题描述】:我正在从事一个在 Git 中涉及英语和希伯来语的项目(Cygwin 上的 2.4.5)。我在 Git 存储库中使用希伯来语没有遇到任何问题。
因为我经常在希伯来语和英语之间来回切换,所以我在我的 bashrc 中为常用命令添加了别名,这样如果我在设置为希伯来语时尝试键入它们,它就可以工作。例如
alias עןא=git
(עןא 不是 Git 的翻译或音译;它根本不是一个词。这只是您尝试键入“git”时得到的结果,但您的键盘设置为希伯来语)。
但是,当我尝试采取下一步措施时,我遇到了问题。我将别名添加到我的 Git 配置中:
[alias]
דאשאוד=status
然后尝试运行:
$ עןא דאשאוד
fatal: bad config file line 18 in /home/Heshy/.gitconfig
(是的,דאשאוד=status 是第 18 行)
有没有办法让 Git 别名接受希伯来字母(通过 .gitconfig 或其他方式)?
【问题讨论】:
错误消息来自git_parse_source()
函数,在 config.h 第 414-477 行。 github.com/git/git/blob/master/config.c#L414
第 461 行对isalpha(c)
的调用很可能是罪魁祸首。我怀疑唯一的解决方案是修改源。我不确定是否可以将其发布为答案。
【参考方案1】:
我找到了自己问题的答案,但它很难看。更好的答案仍然值得赞赏。
echo 'git status "$@"' > /bin/git-דאשאוד
chmod u+x /bin/git-דאשאוד
它可以工作...但有一条我不明白的错误消息。
$ git דאשאוד
error: invalid key: pager.דאשאוד
Untracked files:
(use "git add <file>..." to include in what will be committed)
testfile
nothing added to commit but untracked files present (use "git add" to track)
如果我改为调用文件 git-someenglishname,则不会出现错误消息。
我还尝试了一些操作来 grep 出错误消息。问题是,如果我把它放在 /bin/git-דאשאוד 中,消息仍然存在。我认为这是因为错误消息是由对 git 本身的调用产生的,在对 git-דאשאוד 的调用之外。
我想一个完整的解决方案是为 git 本身(或者可能只是为 עןא)创建一个包装脚本,以删除这些错误消息。这更难看。正如我所说,仍然非常欢迎更好的答案。
【讨论】:
以上是关于Git别名中的Unicode的主要内容,如果未能解决你的问题,请参考以下文章