aboutsummaryrefslogtreecommitdiff
path: root/ident.c
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-02-18 01:20:06 -0800
committerJunio C Hamano <junkio@cox.net>2006-02-18 01:24:38 -0800
commit925f9187697acfdbd7dbfe15e8420e1d3a671433 (patch)
treea0aa611af077c7718b0ab659141af5682400688d /ident.c
parent62a4417b574ce5120882016fd7803b9bccf68a67 (diff)
downloadgit-925f9187697acfdbd7dbfe15e8420e1d3a671433.tar.gz
git-925f9187697acfdbd7dbfe15e8420e1d3a671433.tar.xz
Make "empty ident" error message a bit more helpful.
It appears that some people who did not care about having bogus names in their own commit messages are bitten by the recent change to require a sane environment [*1*]. While it was a good idea to prevent people from using bogus names to create commits and doing sign-offs, the error message is not very informative. This patch attempts to warn things upfront and hint people how to fix their environments. [Footnote] *1* The thread is this one. http://marc.theaimsgroup.com/?t=113868084800004 Especially this message. http://marc.theaimsgroup.com/?m=113932830015032 Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'ident.c')
-rw-r--r--ident.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/ident.c b/ident.c
index 23b8cfc60..09d4d716c 100644
--- a/ident.c
+++ b/ident.c
@@ -46,6 +46,15 @@ static void copy_gecos(struct passwd *w, char *name, int sz)
}
+static const char au_env[] = "GIT_AUTHOR_NAME";
+static const char co_env[] = "GIT_COMMITTER_NAME";
+static const char env_hint[] =
+"\n*** Environment problem:\n"
+"*** Your name cannot be determined from your system services (gecos).\n"
+"*** You would need to set %s and %s\n"
+"*** environment variables; otherwise you won't be able to perform\n"
+"*** certain operations because of \"empty ident\" errors.\n\n";
+
int setup_ident(void)
{
int len;
@@ -57,6 +66,11 @@ int setup_ident(void)
/* Get the name ("gecos") */
copy_gecos(pw, git_default_name, sizeof(git_default_name));
+ if (!*git_default_name) {
+ if (!getenv(au_env) || !getenv(co_env))
+ fprintf(stderr, env_hint, au_env, co_env);
+ }
+
/* Make up a fake email address (name + '@' + hostname [+ '.' + domainname]) */
len = strlen(pw->pw_name);
if (len > sizeof(git_default_email)/2)