To remind the committer ident in case it is not what you want (taken from the gecos field, want to use different ident in different repositories). Signed-off-by: Santi Béjar <sbejar@xxxxxxxxx> --- Hi, it does not work with the initial commit, I don't know why. Even with this: if (!commit) return NULL; Can someone help me? Thanks builtin-commit.c | 30 ++++++++++++++++++++++++++++++ t/t7502-commit.sh | 12 ++++++++++++ 2 files changed, 42 insertions(+), 0 deletions(-) diff --git a/builtin-commit.c b/builtin-commit.c index c51c70f..06582ef 100644 --- a/builtin-commit.c +++ b/builtin-commit.c @@ -437,6 +437,29 @@ static void determine_author_info() author_date = date; } +const char *get_parent_ident() +{ + unsigned char sha1[20]; + struct commit *commit; + const char *a, *lb, *rb, *eol; + + + get_sha1("HEAD", sha1); + commit = lookup_commit_reference(sha1); + if (!commit) + return NULL; + + a = strstr(commit->buffer, "\ncommitter "); + + lb = strstr(a + 11, " <"); + rb = strstr(a + 11, "> "); + eol = strchr(a + 11, '\n'); + if (!lb || !rb || !eol) + return NULL; + + return xstrndup(a + 11, rb + 1 - (a + 11)); +} + static int prepare_to_commit(const char *index_file, const char *prefix) { struct stat statbuf; @@ -448,6 +471,7 @@ static int prepare_to_commit(const char *index_file, const char *prefix) const char *hook_arg2 = NULL; const char *author_ident; const char *committer_ident; + const char *parent_ident; if (!no_verify && run_hook(index_file, "pre-commit", NULL)) return 0; @@ -561,6 +585,12 @@ static int prepare_to_commit(const char *index_file, const char *prefix) "# Author: %s\n", fmt_name(author_name, author_email)); + parent_ident = xstrdup(get_parent_ident()); + if (strcmp(parent_ident, committer_ident)) + fprintf(fp, + "# Committer: %s\n", + committer_ident); + saved_color_setting = wt_status_use_color; wt_status_use_color = 0; commitable = run_status(fp, index_file, prefix, 1); diff --git a/t/t7502-commit.sh b/t/t7502-commit.sh index 95acf4c..96b5dcb 100755 --- a/t/t7502-commit.sh +++ b/t/t7502-commit.sh @@ -164,6 +164,18 @@ test_expect_success 'author different from committer' ' test_cmp expect actual ' +GIT_COMMITTER_NAME="C. O. Mitter" +export GIT_COMMITTER_NAME +echo "# Committer: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>" >> expect + +test_expect_success 'committer different from the parent committer' ' + + echo >>negative && + git commit -e -m "sample" + head -n 6 .git/COMMIT_EDITMSG >actual && + test_cmp expect actual +' + pwd=`pwd` cat >> .git/FAKE_EDITOR << EOF #! /bin/sh -- 1.5.5.1.148.g37726 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html