Thank you for the explanation. Yes, having the error explicitly mention t about which of author/committer this is would be helpful. On Fri, Aug 21, 2020 at 2:47 PM Junio C Hamano <gitster@xxxxxxxxx> wrote: > > Andreas Schwab <schwab@xxxxxxxxxxxxxx> writes: > > > On Aug 21 2020, Alvaro Aleman wrote: > > > >> It seems the `--author` arg on the `git commit` command only works if > >> an author email is configured already somewhere: > > > > The `--author' argument only sets the author, but git still need to fill > > in the committer. > > In other words, the --author option works just fine. You still need > to tell Git what committer identity you want to use, and the easiest > way to do so is with user.{name,email} configuration variables. > > I wonder if it helps to give an extra line of message like the > attached (untested) patch, though. > > ident.c | 51 ++++++++++++++++++++++++++++++++++----------------- > 1 file changed, 34 insertions(+), 17 deletions(-) > > diff --git a/ident.c b/ident.c > index e666ee4e59..177ac00261 100644 > --- a/ident.c > +++ b/ident.c > @@ -345,18 +345,35 @@ int split_ident_line(struct ident_split *split, const char *line, int len) > 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@xxxxxxxxxxx\"\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) > +{ > + static const char *env_hint = > + N_("\n" > + "*** Please tell me who you are.\n" > + "\n" > + "Run\n" > + "\n" > + " git config --global user.email \"you@xxxxxxxxxxx\"\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"); > + > + 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(_(env_hint), stderr); > +} > > const char *fmt_ident(const char *name, const char *email, > enum want_ident whose_ident, const char *date_str, int flag) > @@ -375,12 +392,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 +414,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 +428,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); >