}
+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;
/* 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)
/*
* Copy the rest to the buffer, but avoid the special
- * characters '\n' '<' and '>' that act as delimeters on
+ * characters '\n' '<' and '>' that act as delimiters on
* a identification line
*/
for (i = 0; i < len; i++) {
name = git_default_name;
if (!email)
email = git_default_email;
+
+ if (!*name || !*email)
+ die("empty ident %s <%s> not allowed",
+ name, email);
+
strcpy(date, git_default_date);
if (date_str)
parse_date(date_str, date, sizeof(date));