summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Thomas Gummerer <t.gummerer@gmail.com>2019-03-06 22:09:11 +0000
committerLibravatar Junio C Hamano <gitster@pobox.com>2019-03-07 09:41:40 +0900
commit0640897dc5ff1f75308d3ebb45e152aed40bb9a3 (patch)
tree821aef5beab5ca9ddc446fa2dacf935c97eb3097
parentident: add the ability to provide a "fallback identity" (diff)
downloadtgif-0640897dc5ff1f75308d3ebb45e152aed40bb9a3.tar.xz
ident: don't require calling prepare_fallback_ident first
In fd5a58477c ("ident: add the ability to provide a "fallback identity"", 2019-02-25) I made it a requirement to call prepare_fallback_ident as the first function in the ident API. However in stash we didn't actually end up following that. This leads to a BUG if user.email and user.name are set. It was not caught in the test suite because we only rely on environment variables for setting the user name and email instead of the config. Instead of making it a bug to call other functions in the ident API first, just return silently if the identity of a user was already set up. Reported-by: Denton Liu <liu.denton@gmail.com> Helped-by: Jeff King <peff@peff.net> Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--cache.h1
-rw-r--r--ident.c4
-rwxr-xr-xt/t3903-stash.sh6
3 files changed, 7 insertions, 4 deletions
diff --git a/cache.h b/cache.h
index 611e554dea..67e74b7f75 100644
--- a/cache.h
+++ b/cache.h
@@ -1493,7 +1493,6 @@ extern int is_terminal_dumb(void);
extern int git_ident_config(const char *, const char *, void *);
/*
* Prepare an ident to fall back on if the user didn't configure it.
- * Must be called before any other function from the ident API.
*/
void prepare_fallback_ident(const char *name, const char *email);
extern void reset_ident_date(void);
diff --git a/ident.c b/ident.c
index f30bd623f0..bce20e8652 100644
--- a/ident.c
+++ b/ident.c
@@ -507,9 +507,7 @@ int git_ident_config(const char *var, const char *value, void *data)
static void set_env_if(const char *key, const char *value, int *given, int bit)
{
- if (*given & bit)
- BUG("%s was checked before prepare_fallback got called", key);
- if (getenv(key))
+ if ((*given & bit) || getenv(key))
return; /* nothing to do */
setenv(key, value, 0);
*given |= bit;
diff --git a/t/t3903-stash.sh b/t/t3903-stash.sh
index 5f8272b6f9..2115e8767e 100755
--- a/t/t3903-stash.sh
+++ b/t/t3903-stash.sh
@@ -1096,6 +1096,12 @@ test_expect_success 'stash -- <subdir> works with binary files' '
test_path_is_file subdir/untracked
'
+test_expect_success 'stash with user.name and user.email set works' '
+ test_config user.name "A U Thor" &&
+ test_config user.email "a.u@thor" &&
+ git stash
+'
+
test_expect_success 'stash works when user.name and user.email are not set' '
git reset &&
>1 &&