[PATCH 1/6] builtin-commit: fix author date with --amend --author=<author>
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Nov 11, 2007, 17:35 UTC
- Message-ID
- <Pine.LNX.4.64.0711111735100.4362@racer.site>
- In-Reply-To
- <Pine.LNX.4.64.0711111730580.4362@racer.site>
When amending a commit with a new author, the author date is taken from the original commit.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> --- builtin-commit.c | 16 ++++++++++++++++ 1 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/builtin-commit.c b/builtin-commit.c index a84a729..6be6def 100644 --- a/builtin-commit.c +++ b/builtin-commit.c @@ -527,6 +527,7 @@ int cmd_commit(int argc, const char **argv, const char *prefix) } else if (amend) { struct commit_list *c; struct commit *commit; + const char *author; reflog_msg = "commit (amend)"; commit = lookup_commit(head_sha1); @@ -536,6 +537,21 @@ int cmd_commit(int argc, const char **argv, const char *prefix) for (c = commit->parents; c; c = c->next) strbuf_addf(&sb, "parent %s\n", sha1_to_hex(c->item->object.sha1)); + + /* determine author date */ + author = strstr(commit->buffer, "\nauthor"); + if (author && !memmem(commit->buffer, + author + 1 - commit->buffer, + "\n\n", 2)) { + const char *email_end = strchr(author + 1, '>'); + const char *line_end = strchr(author + 1, '\n'); + if (email_end && line_end && email_end < line_end) { + char *date = xstrndup(email_end + 1, + line_end - email_end - 1); + setenv("GIT_AUTHOR_DATE", date, 1); + free(date); + } + } } else if (in_merge) { struct strbuf m; FILE *fp;
-- 1.5.3.5.1693.g26ed