summaryrefslogtreecommitdiff
path: root/builtin/am.c
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2020-10-23 07:26:30 (GMT)
committerJunio C Hamano <gitster@pobox.com>2020-10-26 16:59:57 (GMT)
commit2020451c5bcc5289b8e6f25c7092d4fdb702257a (patch)
tree6bf7b3c23638f7b8581d79fd26a551b41899ab01 /builtin/am.c
parent5f35edd9d7ebca17f205b338d340cc6ce214644a (diff)
downloadgit-2020451c5bcc5289b8e6f25c7092d4fdb702257a.zip
git-2020451c5bcc5289b8e6f25c7092d4fdb702257a.tar.gz
git-2020451c5bcc5289b8e6f25c7092d4fdb702257a.tar.bz2
am, sequencer: stop parsing our own committer ident
For the --committer-date-is-author-date option of git-am and git-rebase, we format the committer ident, then re-parse it to find the name and email, and then feed those back to fmt_ident(). We can simplify this by handling it all at the time of the fmt_ident() call. We pass in the appropriate getenv() results, and if they're not present, then our WANT_COMMITTER_IDENT flag tells fmt_ident() to fill in the appropriate value from the config. Which is exactly what git_committer_ident() was doing under the hood. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/am.c')
-rw-r--r--builtin/am.c19
1 files changed, 3 insertions, 16 deletions
diff --git a/builtin/am.c b/builtin/am.c
index af931e5..b1f45eb 100644
--- a/builtin/am.c
+++ b/builtin/am.c
@@ -98,8 +98,6 @@ struct am_state {
char *author_name;
char *author_email;
char *author_date;
- char *committer_name;
- char *committer_email;
char *msg;
size_t msg_len;
@@ -132,8 +130,6 @@ struct am_state {
*/
static void am_state_init(struct am_state *state)
{
- const char *committer;
- struct ident_split id;
int gpgsign;
memset(state, 0, sizeof(*state));
@@ -154,14 +150,6 @@ static void am_state_init(struct am_state *state)
if (!git_config_get_bool("commit.gpgsign", &gpgsign))
state->sign_commit = gpgsign ? "" : NULL;
-
- committer = git_committer_info(IDENT_STRICT);
- if (split_ident_line(&id, committer, strlen(committer)) < 0)
- die(_("invalid committer: %s"), committer);
- state->committer_name =
- xmemdupz(id.name_begin, id.name_end - id.name_begin);
- state->committer_email =
- xmemdupz(id.mail_begin, id.mail_end - id.mail_begin);
}
/**
@@ -173,8 +161,6 @@ static void am_state_release(struct am_state *state)
free(state->author_name);
free(state->author_email);
free(state->author_date);
- free(state->committer_name);
- free(state->committer_email);
free(state->msg);
argv_array_clear(&state->git_apply_opts);
}
@@ -1594,8 +1580,9 @@ static void do_commit(const struct am_state *state)
IDENT_STRICT);
if (state->committer_date_is_author_date)
- committer = fmt_ident(state->committer_name,
- state->committer_email, WANT_COMMITTER_IDENT,
+ committer = fmt_ident(getenv("GIT_COMMITTER_NAME"),
+ getenv("GIT_COMMITTER_EMAIL"),
+ WANT_COMMITTER_IDENT,
state->ignore_date ? NULL
: state->author_date,
IDENT_STRICT);