]> Kevux Git Server - rit/commitdiff
Don't force everybody to call setup_ident().
authorJunio C Hamano <junkio@cox.net>
Sun, 28 Jan 2007 08:50:53 +0000 (00:50 -0800)
committerJunio C Hamano <junkio@cox.net>
Sun, 28 Jan 2007 09:58:50 +0000 (01:58 -0800)
Back when only handful commands that created commit and tag were
the only users of committer identity information, it made sense
to explicitly call setup_ident() to pre-fill the default value
from the gecos information.  But it is much simpler for programs
to make the call automatic when get_ident() is called these days,
since many more programs want to use the information when updating
the reflog.

Signed-off-by: Junio C Hamano <junkio@cox.net>
13 files changed:
builtin-branch.c
builtin-commit-tree.c
builtin-log.c
builtin-update-ref.c
cache.h
fetch-pack.c
http-fetch.c
http-push.c
ident.c
local-fetch.c
receive-pack.c
ssh-fetch.c
var.c

index 25ffa54..d60690b 100644 (file)
@@ -394,7 +394,6 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
        int kinds = REF_LOCAL_BRANCH;
        int i;
 
-       setup_ident();
        git_config(git_branch_config);
 
        for (i = 1; i < argc; i++) {
index 0651e59..2a818a0 100644 (file)
@@ -94,7 +94,6 @@ int cmd_commit_tree(int argc, const char **argv, const char *prefix)
        unsigned int size;
        int encoding_is_utf8;
 
-       setup_ident();
        git_config(git_default_config);
 
        if (argc < 2)
index 56acc13..982d871 100644 (file)
@@ -380,7 +380,6 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
        char message_id[1024];
        char ref_message_id[1024];
 
-       setup_ident();
        git_config(git_format_config);
        init_revisions(&rev, prefix);
        rev.commit_format = CMIT_FMT_EMAIL;
index b34e598..1461937 100644 (file)
@@ -13,7 +13,6 @@ int cmd_update_ref(int argc, const char **argv, const char *prefix)
        int i, delete;
 
        delete = 0;
-       setup_ident();
        git_config(git_default_config);
 
        for (i = 1; i < argc; i++) {
diff --git a/cache.h b/cache.h
index 9486132..9873ee9 100644 (file)
--- a/cache.h
+++ b/cache.h
@@ -319,7 +319,6 @@ int parse_date(const char *date, char *buf, int bufsize);
 void datestamp(char *buf, int bufsize);
 unsigned long approxidate(const char *);
 
-extern int setup_ident(void);
 extern const char *git_author_info(int);
 extern const char *git_committer_info(int);
 
index 83a1d7b..c787106 100644 (file)
@@ -670,7 +670,6 @@ int main(int argc, char **argv)
        struct stat st;
 
        setup_git_directory();
-       setup_ident();
        git_config(fetch_pack_config);
 
        if (0 <= transfer_unpack_limit)
index 67dfb0a..efd494a 100644 (file)
@@ -1003,7 +1003,6 @@ int main(int argc, const char **argv)
        int arg = 1;
        int rc = 0;
 
-       setup_ident();
        setup_git_directory();
        git_config(git_default_config);
 
index 0a15f53..b128c01 100644 (file)
@@ -2299,7 +2299,6 @@ int main(int argc, char **argv)
        struct ref *ref;
 
        setup_git_directory();
-       setup_ident();
 
        remote = xcalloc(sizeof(*remote), 1);
 
diff --git a/ident.c b/ident.c
index f967790..6de7eea 100644 (file)
--- a/ident.c
+++ b/ident.c
@@ -43,19 +43,13 @@ static void copy_gecos(struct passwd *w, char *name, int sz)
 
 }
 
-int setup_ident(void)
+static void copy_email(struct passwd *pw)
 {
-       int len;
-       struct passwd *pw = getpwuid(getuid());
-
-       if (!pw)
-               die("You don't exist. Go away!");
-
-       /* Get the name ("gecos") */
-       copy_gecos(pw, git_default_name, sizeof(git_default_name));
-
-       /* Make up a fake email address (name + '@' + hostname [+ '.' + domainname]) */
-       len = strlen(pw->pw_name);
+       /*
+        * Make up a fake email address
+        * (name + '@' + hostname [+ '.' + domainname])
+        */
+       int len = strlen(pw->pw_name);
        if (len > sizeof(git_default_email)/2)
                die("Your sysadmin must hate you!");
        memcpy(git_default_email, pw->pw_name, len);
@@ -68,13 +62,37 @@ int setup_ident(void)
                len = strlen(git_default_email);
                git_default_email[len++] = '.';
                if (he && (domainname = strchr(he->h_name, '.')))
-                       strlcpy(git_default_email + len, domainname + 1, sizeof(git_default_email) - len);
+                       strlcpy(git_default_email + len, domainname + 1,
+                               sizeof(git_default_email) - len);
                else
-                       strlcpy(git_default_email + len, "(none)", sizeof(git_default_email) - len);
+                       strlcpy(git_default_email + len, "(none)",
+                               sizeof(git_default_email) - len);
        }
+}
+
+static void setup_ident(void)
+{
+       struct passwd *pw = NULL;
+
+       /* Get the name ("gecos") */
+       if (!git_default_name[0]) {
+               pw = getpwuid(getuid());
+               if (!pw)
+                       die("You don't exist. Go away!");
+               copy_gecos(pw, git_default_name, sizeof(git_default_name));
+       }
+
+       if (!git_default_email[0]) {
+               if (!pw)
+                       pw = getpwuid(getuid());
+               if (!pw)
+                       die("You don't exist. Go away!");
+               copy_email(pw);
+       }
+
        /* And set the default date */
-       datestamp(git_default_date, sizeof(git_default_date));
-       return 0;
+       if (!git_default_date[0])
+               datestamp(git_default_date, sizeof(git_default_date));
 }
 
 static int add_raw(char *buf, int size, int offset, const char *str)
@@ -174,6 +192,7 @@ static const char *get_ident(const char *name, const char *email,
        char date[50];
        int i;
 
+       setup_ident();
        if (!name)
                name = git_default_name;
        if (!email)
index cf99cb7..7cfe8b3 100644 (file)
@@ -210,7 +210,6 @@ int main(int argc, const char **argv)
        char **commit_id;
        int arg = 1;
 
-       setup_ident();
        setup_git_directory();
        git_config(git_default_config);
 
index 7d26326..7311c82 100644 (file)
@@ -429,7 +429,6 @@ int main(int argc, char **argv)
        if (is_repository_shallow())
                die("attempt to push into a shallow repository");
 
-       setup_ident();
        git_config(receive_pack_config);
 
        if (0 <= transfer_unpack_limit)
index 4c172b6..bdf51a7 100644 (file)
@@ -124,7 +124,6 @@ int main(int argc, char **argv)
        prog = getenv("GIT_SSH_PUSH");
        if (!prog) prog = "git-ssh-upload";
 
-       setup_ident();
        setup_git_directory();
        git_config(git_default_config);
 
diff --git a/var.c b/var.c
index 39977b9..e585e59 100644 (file)
--- a/var.c
+++ b/var.c
@@ -56,7 +56,6 @@ int main(int argc, char **argv)
        }
 
        setup_git_directory();
-       setup_ident();
        val = NULL;
 
        if (strcmp(argv[1], "-l") == 0) {