是否可以在Git中的user.name中有一个尾随句点?

时间:2014-10-02 10:51:03

标签: git

以下Git语句

cd periodtest/
git init
git config user.name "Test."

# verify that user.name is 'Test.'
git config user.name

touch README
git add README
git commit -a -m "period test"

以下结帐时的结果

# check user name after commit
git log 
And the resulting commit w/out the period was:
commit 9b7e4960fd8129059b5759d1bb937b60241fd70b
Author: Test <email@test.com>
Date:   Wed Oct 1 20:28:28 2014 -0700

    period test

有没有办法让这段时间留在用户名中?

1 个答案:

答案 0 :(得分:9)

此行为已硬编码为git。

编辑:目前对于git版本2.16.1(2018年1月22日)仍然如此

要在提交过程中创建 author 字符串,请从字符串的开头和结尾删除 crud (如git所述)。为此,它使用strbuf_addstr_without_crud - see ident.c line 406 version 2.16.1中定义的ident.c函数。看一下函数头。

/*
 * Copy over a string to the destination, but avoid special
 * characters ('\n', '<' and '>') and remove crud at the end
 */
static void strbuf_addstr_without_crud(struct strbuf *sb, const char *src)

See ident.c lines 214-255 version 2.16.1

Git通过另一个检查特定字符的函数来确定 crud

static int crud(unsigned char c)
{
  return  c <= 32  ||
    c == '.' ||
    c == ',' ||
    c == ':' ||
    c == ';' ||
    c == '<' ||
    c == '>' ||
    c == '"' ||
    c == '\\' ||
    c == '\'';
}

See ident.c lines 191-203 version 2.16.1

正如您所看到的那样,git会将某个句点视为 crud ,并且会被删除,目前没有任何标记或选项可以设置为避免此行为。


这意味着您有两种选择。

  1. 你派git并改变git创建 author 字符串的方式。

  2. 或者在尾随句点之后追加另一个字符,例如Zero-width space(通常无法在控制台上正确打印)

  3. 或者你可以随时在git邮件列表上提交功能请求,但在这种情况下,我不会过高的期望。