Возможно ли иметь конечный период в user.name в 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 protected]>
Date:   Wed Oct 1 20:28:28 2014 -0700

    period test

Есть ли способ, чтобы этот период оставался в имени пользователя?

Ответ 1

Это поведение жестко закодировано в git.

Изменить: В нынешнем виде это все еще верно для git версии 2.22.0 (19 июня 2019 года).

Чтобы создать строку автора во время коммита, git удаляет crud (как его называет git) из начала и конца строки. Для этого он использует функцию strbuf_addstr_without_crud определенную в ident.c - см. Identif.c line 406 version 2.22.0. Посмотрите на заголовок функции.

/*
 * 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)

См. Id.c строки 221-255 версии 2.22.0.

Git определяет crud с помощью другой функции, которая проверяет наличие определенных символов.

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

См. Id.c линии 198-210 версии 2.22.0.

Как вы можете видеть, период считается git и будет удален, и в данный момент нет никакого флага или параметра, который вы можете установить, чтобы избежать такого поведения.


Это означает, что у вас есть два варианта.

  1. Вы раскручиваете git и изменяете способ, которым git создает строку автора.

  2. Или вы добавляете другой символ после завершающего периода, например пробел нулевой ширины (который часто не будет правильно печататься на консоли)

В качестве альтернативы вы всегда можете отправить запрос на добавление функций в список рассылки git, но в этом случае я бы не стал слишком сильно возлагать надежды.