Git别名中的Unicode

8
我正在进行一个涉及英语和希伯来语的Git项目(在Cygwin上使用2.4.5版本)。我在使用Git存储库中的希伯来语时没有遇到任何问题。
由于我经常在希伯来语和英语之间切换,我在我的bashrc中为常用命令设置了别名,这样如果我在希伯来语设置下尝试输入它们,它们就会起作用。例如:
alias עןא=git

(עןא不是Git的翻译或音译;它根本不是一个单词。这只是当您尝试键入“git”,但您的键盘设置为希伯来语时出现的结果)。

但是,当我尝试进行下一步时,会遇到问题。我将别名添加到我的Git配置中:

  [alias]
    דאשאוד=status

然后尝试运行:

$ עןא דאשאוד
  fatal: bad config file line 18 in /home/Heshy/.gitconfig

有没有办法让Git别名接受希伯来字母(通过.gitconfig或其他方式)?

(是的,דאשאוד=status 在第18行)


错误信息来自于 git_parse_source() 函数,在 config.h 的 414-477 行。https://github.com/git/git/blob/master/config.c#L414 - Keith Thompson
第461行调用isalpha(c)很可能是罪魁祸首。我怀疑唯一的解决方案是修改源代码。我不确定是否足够确切,不能将其发布为答案。 - Keith Thompson
1个回答

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本身(或者只是为עןא)创建一个包装脚本,以删除那些错误消息。这甚至更加丑陋。正如我所说,更好的答案仍然非常受欢迎。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接