builtin-commit: fix --signoff
[gitweb.git] / ident.c
diff --git a/ident.c b/ident.c
index 3d49608e6f9afe22f24a2faf70f2d6cee50b8919..5be7533ffd061bee4d3e1c184c375b095cfed575 100644 (file)
--- a/ident.c
+++ b/ident.c
@@ -83,11 +83,18 @@ static void setup_ident(void)
        }
 
        if (!git_default_email[0]) {
-               if (!pw)
-                       pw = getpwuid(getuid());
-               if (!pw)
-                       die("You don't exist. Go away!");
-               copy_email(pw);
+               const char *email = getenv("EMAIL");
+
+               if (email && email[0])
+                       strlcpy(git_default_email, email,
+                               sizeof(git_default_email));
+               else {
+                       if (!pw)
+                               pw = getpwuid(getuid());
+                       if (!pw)
+                               die("You don't exist. Go away!");
+                       copy_email(pw);
+               }
        }
 
        /* And set the default date */
@@ -178,11 +185,11 @@ static const char *env_hint =
 "\n"
 "Run\n"
 "\n"
-"  git config user.email \"you@email.com\"\n"
-"  git config user.name \"Your Name\"\n"
+"  git config --global user.email \"you@email.com\"\n"
+"  git config --global user.name \"Your Name\"\n"
 "\n"
-"To set the identity in this repository.\n"
-"Add --global to set your account\'s default\n"
+"to set your account\'s default identity.\n"
+"Omit --global to set the identity only in this repository.\n"
 "\n";
 
 const char *fmt_ident(const char *name, const char *email,
@@ -197,8 +204,6 @@ const char *fmt_ident(const char *name, const char *email,
                name = git_default_name;
        if (!email)
                email = git_default_email;
-       if (!email)
-               email = getenv("EMAIL");
 
        if (!*name) {
                struct passwd *pw;
@@ -219,13 +224,17 @@ const char *fmt_ident(const char *name, const char *email,
        }
 
        strcpy(date, git_default_date);
-       if (date_str)
-               parse_date(date_str, date, sizeof(date));
+       if (date_str) {
+               if (*date_str)
+                       parse_date(date_str, date, sizeof(date));
+               else
+                       date[0] = '\0';
+       }
 
        i = copy(buffer, sizeof(buffer), 0, name);
        i = add_raw(buffer, sizeof(buffer), i, " <");
        i = copy(buffer, sizeof(buffer), i, email);
-       i = add_raw(buffer, sizeof(buffer), i, "> ");
+       i = add_raw(buffer, sizeof(buffer), i, date[0] ? "> " : ">");
        i = copy(buffer, sizeof(buffer), i, date);
        if (i >= sizeof(buffer))
                die("Impossibly long personal identifier");