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的主要内容,如果未能解决你的问题,请参考以下文章

Git别名中的管道?

Git 配置别名

Git - 删除或编辑别名

如何在 Windows 的 Git Bash 中设置别名?

如何在 Git 中给标签起别名?

Git基础入门Git标签和别名