Подтвердить что ты не робот

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

У меня есть отдельные адреса электронной почты, которые я использую для проектов работы с проектами с открытым исходным кодом, и я хочу, чтобы я использовал правильный для каждого типа проекта.

Очевидно, что решение установить хранилище конкретной конфигурации надлежащим образом, к сожалению, я забываю, чтобы установить его, пока я несколько фиксаций в и так я использую глобальный user.email конфигурацию, который прекрасно, если это совпадает с каким Я работаю, но не так хорошо.

Если user.email не установлен нигде, git просто запихивает локальное имя пользователя и хост вместе, чтобы сделать один (не так классно для настольной машины); Мне бы хотелось просто заблокировать фиксацию. Я не думаю, что крюки будет работать, так как я хочу, чтобы это произошло для новых и клонированных сделкам РЕПО. - если я вручную скопировать крюк в репозиторий, я, вероятно, следует установить конфигурации вместо

4b9b3361

Ответ 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:

Ответ 2

Существует hack/обходной путь, который я только что обнаружил, просто установите глобальное электронное письмо по умолчанию на (none), например:

git config --global user.email "(none)"

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