зеркало из https://github.com/microsoft/git.git
ident: say whose identity is missing when giving user.name hint
If `user.name` and `user.email` have not been configured and the user invokes: git commit --author=... without specifying the committer identity, then Git errors out with a message asking the user to configure `user.name` and `user.email` but doesn't tell the user which attribution was missing. This can be confusing for a user new to Git who isn't aware of the distinction between user, author, and committer. Give such users a bit more help by extending the error message to also say which attribution is expected. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
675a4aaf3b
Коммит
9ed104e5ca
48
ident.c
48
ident.c
|
@ -345,18 +345,32 @@ person_only:
|
|||
return 0;
|
||||
}
|
||||
|
||||
static const char *env_hint =
|
||||
N_("\n"
|
||||
"*** Please tell me who you are.\n"
|
||||
"\n"
|
||||
"Run\n"
|
||||
"\n"
|
||||
" git config --global user.email \"you@example.com\"\n"
|
||||
" git config --global user.name \"Your Name\"\n"
|
||||
"\n"
|
||||
"to set your account\'s default identity.\n"
|
||||
"Omit --global to set the identity only in this repository.\n"
|
||||
"\n");
|
||||
|
||||
static void ident_env_hint(enum want_ident whose_ident)
|
||||
{
|
||||
switch (whose_ident) {
|
||||
case WANT_AUTHOR_IDENT:
|
||||
fputs(_("Author identity unknown\n"), stderr);
|
||||
break;
|
||||
case WANT_COMMITTER_IDENT:
|
||||
fputs(_("Committer identity unknown\n"), stderr);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
fputs(_("\n"
|
||||
"*** Please tell me who you are.\n"
|
||||
"\n"
|
||||
"Run\n"
|
||||
"\n"
|
||||
" git config --global user.email \"you@example.com\"\n"
|
||||
" git config --global user.name \"Your Name\"\n"
|
||||
"\n"
|
||||
"to set your account\'s default identity.\n"
|
||||
"Omit --global to set the identity only in this repository.\n"
|
||||
"\n"), stderr);
|
||||
}
|
||||
|
||||
const char *fmt_ident(const char *name, const char *email,
|
||||
enum want_ident whose_ident, const char *date_str, int flag)
|
||||
|
@ -375,12 +389,12 @@ const char *fmt_ident(const char *name, const char *email,
|
|||
if (!email) {
|
||||
if (strict && ident_use_config_only
|
||||
&& !(ident_config_given & IDENT_MAIL_GIVEN)) {
|
||||
fputs(_(env_hint), stderr);
|
||||
ident_env_hint(whose_ident);
|
||||
die(_("no email was given and auto-detection is disabled"));
|
||||
}
|
||||
email = ident_default_email();
|
||||
if (strict && default_email_is_bogus) {
|
||||
fputs(_(env_hint), stderr);
|
||||
ident_env_hint(whose_ident);
|
||||
die(_("unable to auto-detect email address (got '%s')"), email);
|
||||
}
|
||||
}
|
||||
|
@ -397,13 +411,13 @@ const char *fmt_ident(const char *name, const char *email,
|
|||
if (!name) {
|
||||
if (strict && ident_use_config_only
|
||||
&& !(ident_config_given & IDENT_NAME_GIVEN)) {
|
||||
fputs(_(env_hint), stderr);
|
||||
ident_env_hint(whose_ident);
|
||||
die(_("no name was given and auto-detection is disabled"));
|
||||
}
|
||||
name = ident_default_name();
|
||||
using_default = 1;
|
||||
if (strict && default_name_is_bogus) {
|
||||
fputs(_(env_hint), stderr);
|
||||
ident_env_hint(whose_ident);
|
||||
die(_("unable to auto-detect name (got '%s')"), name);
|
||||
}
|
||||
}
|
||||
|
@ -411,7 +425,7 @@ const char *fmt_ident(const char *name, const char *email,
|
|||
struct passwd *pw;
|
||||
if (strict) {
|
||||
if (using_default)
|
||||
fputs(_(env_hint), stderr);
|
||||
ident_env_hint(whose_ident);
|
||||
die(_("empty ident name (for <%s>) not allowed"), email);
|
||||
}
|
||||
pw = xgetpwuid_self(NULL);
|
||||
|
|
|
@ -29,7 +29,18 @@ test_expect_success 'empty configured name does not auto-detect' '
|
|||
sane_unset GIT_AUTHOR_NAME &&
|
||||
test_must_fail \
|
||||
git -c user.name= commit --allow-empty -m foo 2>err &&
|
||||
test_i18ngrep "empty ident name" err
|
||||
test_i18ngrep "empty ident name" err &&
|
||||
test_i18ngrep "Author identity unknown" err
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'empty configured name does not auto-detect for committer' '
|
||||
(
|
||||
sane_unset GIT_COMMITTER_NAME &&
|
||||
test_must_fail \
|
||||
git -c user.name= commit --allow-empty -m foo 2>err &&
|
||||
test_i18ngrep "empty ident name" err &&
|
||||
test_i18ngrep "Committer identity unknown" err
|
||||
)
|
||||
'
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче