Ответ 1
Новое обновление (февраль 2016, для git 2.8)
git 2.8 (март 2016 г.) добавит новое решение:
См. commit 4d5c295 (06 февраля 2016 г.) Дэн Алони (da-x
).
Помощник: Эрик Саншайн (sunshineco
).
См. commit 59f9295 (04 февраля 2016 г.) Джефф Кинг (peff
).
Помощник: Эрик Саншайн (sunshineco
).
(слияние Junio C Hamano - gitster
- в совершить c37f9a1, 17 февраля 2016 г.)
ident
: добавитьuser.useConfigOnly
boolean, когдаident
не следует угадыватьРаньше это было:
git config --global user.email "(none)"
был жизнеспособным способом для людей заставить себя установить
user.email
в каждый репозиторий.
Это было полезно для людей с несколькими адресами электронной почты, предназначенных для разных адресов электронной почты для разных клонов, поскольку это запрещало git от создания коммита, если только конфигураторuser.email
не был установлен в конфигурацию per-repo на правильный адрес электронной почты.Последнее изменение, 19ce497 (
ident
: сохранить флаг для фиктивных default_email, 2015-12-10 для git 2.6.5, январь 2016), однако заявил, что явно сконфигурированныйuser.email
не является фиктивным, независимо от его значения, поэтому этот хак больше не работает.Обеспечьте такую же функциональность, добавив новую переменную конфигурации
user.useConfigOnly
; когда эта переменная установлена, пользователь должен явно указать конфигурацию user.email.
Итак, начиная с марта 2016 года и git 2.8, do:
git config --global user.useConfigOnly true
Любое ваше новое репо будет искать user.email
только в локальном файле .git/config
.
И фиксация не будет действовать, если в локальной конфигурации git не найдено user.email
.
Обратите внимание, что он будет расширен еще в git 2.9 (июнь 2016 года):
См. commit d3c06c1, совершить 734c778 ( 30 марта 2016 года) Мариос Титас (` `).
(объединено Junio C Hamano - gitster
- в совершить e7e6826, 29 апреля 2016 года)
ident
: проверьтеuseConfigOnly
перед автоматическим обнаружением имени/электронной почтыЕсли установлено
user.useConfigOnly
, нет смысла пытаться автоматически определять имя и/или адрес электронной почты.
Автоматическое обнаружение может даже привести к фиктивному имени и вызвать сообщение об ошибке.
ident
: сообщите сообщение "пожалуйста, сообщите мне" по ошибкеuseConfigOnly
используйте менее описательное сообщение об ошибке, чтобы препятствовать пользователям отключать переменную конфигурации
user.useConfigOnly
, чтобы обойти это условие ошибки. Мы хотим побудить их вместо этого указать user.name или user.email.
Итак, вместо:
user.useConfigOnly set but no name given
user.useConfigOnly set but no mail given
Вы увидите:
no name was given and auto-detection is disabled
no email was given and auto-detection is disabled
Оригинальный ответ (сентябрь 2012 г.)
Немного как в Остановить фиксацию git конкретным автором с использованием привязки до фиксации", вы можете определить по умолчанию pre-commit hook, которые проверяют:
git config --local user.email
пусто или нет.
Если он пуст: exit 1
Чтобы убедиться, что вы используете этот крючок по умолчанию для каждого созданного вами репо, см. "изменить default git hooks".
Это аналогичный подход, описанный в "Поделитесь своими крючками git: