diff options
author | Junio C Hamano <junkio@cox.net> | 2006-02-21 00:46:07 -0800 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-02-21 00:46:07 -0800 |
commit | 6ead3972f54e290b255b9c5379a2f9a35ec9f847 (patch) | |
tree | 9035b08cb243740ca904985d42043e01775852f9 | |
parent | cherry-pick/revert: error-help message rewording. (diff) | |
parent | Keep Porcelainish from failing by broken ident after making changes. (diff) | |
download | tgif-6ead3972f54e290b255b9c5379a2f9a35ec9f847.tar.xz |
Merge branch 'jc/ident'
* jc/ident:
Keep Porcelainish from failing by broken ident after making changes.
Delay "empty ident" errors until they really matter.
Make "empty ident" error message a bit more helpful.
-rw-r--r-- | cache.h | 4 | ||||
-rw-r--r-- | commit-tree.c | 4 | ||||
-rwxr-xr-x | git-am.sh | 4 | ||||
-rwxr-xr-x | git-applymbox.sh | 2 | ||||
-rwxr-xr-x | git-merge.sh | 5 | ||||
-rwxr-xr-x | git-resolve.sh | 3 | ||||
-rw-r--r-- | ident.c | 33 | ||||
-rw-r--r-- | var.c | 6 |
8 files changed, 45 insertions, 16 deletions
@@ -246,8 +246,8 @@ void datestamp(char *buf, int bufsize); unsigned long approxidate(const char *); extern int setup_ident(void); -extern const char *git_author_info(void); -extern const char *git_committer_info(void); +extern const char *git_author_info(int); +extern const char *git_committer_info(int); struct checkout { const char *base_dir; diff --git a/commit-tree.c b/commit-tree.c index b1c8dca48d..88871b022d 100644 --- a/commit-tree.c +++ b/commit-tree.c @@ -118,8 +118,8 @@ int main(int argc, char **argv) add_buffer(&buffer, &size, "parent %s\n", sha1_to_hex(parent_sha1[i])); /* Person/date information */ - add_buffer(&buffer, &size, "author %s\n", git_author_info()); - add_buffer(&buffer, &size, "committer %s\n\n", git_committer_info()); + add_buffer(&buffer, &size, "author %s\n", git_author_info(1)); + add_buffer(&buffer, &size, "committer %s\n\n", git_committer_info(1)); /* And add the comment */ while (fgets(comment, sizeof(comment), stdin) != NULL) @@ -1,11 +1,13 @@ #!/bin/sh # -# +# Copyright (c) 2005, 2006 Junio C Hamano USAGE='[--signoff] [--dotest=<dir>] [--utf8] [--binary] [--3way] <mbox> or, when resuming [--skip | --resolved]' . git-sh-setup +git var GIT_COMMITTER_IDENT >/dev/null || exit + stop_here () { echo "$1" >"$dotest/next" exit 1 diff --git a/git-applymbox.sh b/git-applymbox.sh index 61c8c024c6..5569fdcc34 100755 --- a/git-applymbox.sh +++ b/git-applymbox.sh @@ -21,6 +21,8 @@ USAGE='[-u] [-k] [-q] [-m] (-c .dotest/<num> | mbox) [signoff]' . git-sh-setup +git var GIT_COMMITTER_IDENT >/dev/null || exit + keep_subject= query_apply= continue= utf8= resume=t while case "$#" in 0) break ;; esac do diff --git a/git-merge.sh b/git-merge.sh index 74f07610fa..2b4a603dff 100755 --- a/git-merge.sh +++ b/git-merge.sh @@ -142,6 +142,8 @@ case "$#,$common,$no_commit" in 1,*,) # We are not doing octopus, not fast forward, and have only # one common. See if it is really trivial. + git var GIT_COMMITTER_IDENT >/dev/null || exit + echo "Trying really trivial in-index merge..." git-update-index --refresh 2>/dev/null if git-read-tree --trivial -m -u $common $head "$1" && @@ -179,6 +181,9 @@ case "$#,$common,$no_commit" in ;; esac +# We are going to make a new commit. +git var GIT_COMMITTER_IDENT >/dev/null || exit + case "$use_strategies" in '') case "$#" in diff --git a/git-resolve.sh b/git-resolve.sh index 9263070054..b53ede8d87 100755 --- a/git-resolve.sh +++ b/git-resolve.sh @@ -50,6 +50,9 @@ case "$common" in ;; esac +# We are going to make a new commit. +git var GIT_COMMITTER_IDENT >/dev/null || exit + # Find an optimum merge base if there are more than one candidates. LF=' ' @@ -156,8 +156,18 @@ static int copy(char *buf, int size, int offset, const char *src) return offset; } +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" +"*** Alternatively, you can use user.name configuration variable.\n\n"; + static const char *get_ident(const char *name, const char *email, - const char *date_str) + const char *date_str, int error_on_no_name) { static char buffer[1000]; char date[50]; @@ -168,9 +178,14 @@ static const char *get_ident(const char *name, const char *email, if (!email) email = git_default_email; - if (!*name || !*email) - die("empty ident %s <%s> not allowed", - name, email); + if (!*name) { + if (name == git_default_name && env_hint) { + fprintf(stderr, env_hint, au_env, co_env); + env_hint = NULL; /* warn only once, for "git-var -l" */ + } + if (error_on_no_name) + die("empty ident %s <%s> not allowed", name, email); + } strcpy(date, git_default_date); if (date_str) @@ -187,16 +202,18 @@ static const char *get_ident(const char *name, const char *email, return buffer; } -const char *git_author_info(void) +const char *git_author_info(int error_on_no_name) { return get_ident(getenv("GIT_AUTHOR_NAME"), getenv("GIT_AUTHOR_EMAIL"), - getenv("GIT_AUTHOR_DATE")); + getenv("GIT_AUTHOR_DATE"), + error_on_no_name); } -const char *git_committer_info(void) +const char *git_committer_info(int error_on_no_name) { return get_ident(getenv("GIT_COMMITTER_NAME"), getenv("GIT_COMMITTER_EMAIL"), - getenv("GIT_COMMITTER_DATE")); + getenv("GIT_COMMITTER_DATE"), + error_on_no_name); } @@ -12,7 +12,7 @@ static const char var_usage[] = "git-var [-l | <variable>]"; struct git_var { const char *name; - const char *(*read)(void); + const char *(*read)(int); }; static struct git_var git_vars[] = { { "GIT_COMMITTER_IDENT", git_committer_info }, @@ -24,7 +24,7 @@ static void list_vars(void) { struct git_var *ptr; for(ptr = git_vars; ptr->read; ptr++) { - printf("%s=%s\n", ptr->name, ptr->read()); + printf("%s=%s\n", ptr->name, ptr->read(0)); } } @@ -35,7 +35,7 @@ static const char *read_var(const char *var) val = NULL; for(ptr = git_vars; ptr->read; ptr++) { if (strcmp(var, ptr->name) == 0) { - val = ptr->read(); + val = ptr->read(1); break; } } |