Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'ident.c')
-rw-r--r--ident.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/ident.c b/ident.c
index 33bcf40644..f30bd623f0 100644
--- a/ident.c
+++ b/ident.c
@@ -505,6 +505,28 @@ int git_ident_config(const char *var, const char *value, void *data)
return 0;
}
+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))
+ return; /* nothing to do */
+ setenv(key, value, 0);
+ *given |= bit;
+}
+
+void prepare_fallback_ident(const char *name, const char *email)
+{
+ set_env_if("GIT_AUTHOR_NAME", name,
+ &author_ident_explicitly_given, IDENT_NAME_GIVEN);
+ set_env_if("GIT_AUTHOR_EMAIL", email,
+ &author_ident_explicitly_given, IDENT_MAIL_GIVEN);
+ set_env_if("GIT_COMMITTER_NAME", name,
+ &committer_ident_explicitly_given, IDENT_NAME_GIVEN);
+ set_env_if("GIT_COMMITTER_EMAIL", email,
+ &committer_ident_explicitly_given, IDENT_MAIL_GIVEN);
+}
+
static int buf_cmp(const char *a_begin, const char *a_end,
const char *b_begin, const char *b_end)
{