git ls-files真的与字符无关吗?如果不是,那是什么?

时间:2011-02-24 21:49:26

标签: git utf-8

我在Mac OS 10.6中使用git版本1.7.0。

如果我执行

echo "" > frëd   # that's f r \xEB d
git ls-files --other 'f*'

我回来了

"fre\314\210d"                     # that's 14 characters including two \'s

ls f*报告

frëd                               # 4 characters, 5 bytes

这会导致Emacs中magit-status模式的行为不良。

我如何解决这个问题,并以相同的方式报告git ls-files ls没有解释文件名的字节?

- 大卫

1 个答案:

答案 0 :(得分:5)

Git转义文件名,使其不包含任何难以解释的字符,如终端序列,常用分隔符,如换行符等。顺便说一下(gnu)ls,但ls更宽容。您可以使用-z标志以零终止,机器可解析的格式获取原始名称。 Magit应该使用它(解析转义更脆弱),如果可以的话修补它。