diff options
author | Junio C Hamano <gitster@pobox.com> | 2011-11-07 16:21:32 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-11-09 10:28:04 -0800 |
commit | 5231c633f2e54723d53a8cd928d9bc98b39dc35f (patch) | |
tree | b7f624f3742c4baf285d1e59ee1a1dbab1198fee /builtin/commit.c | |
parent | 274a5c06d525da8c9720ae60454fba6779523c52 (diff) | |
download | git-5231c633f2e54723d53a8cd928d9bc98b39dc35f.tar.gz |
commit: copy merged signed tags to headers of merge commit
Now MERGE_HEAD records the tag objects without peeling, we could record
the result of manual conflict resolution via "git commit" without losing
the tag information. Introduce a new "mergetag" multi-line header field to
the commit object, and use it to store the entire contents of each signed
tag merged.
A commit header that has a multi-line payload begins with the header tag
(e.g. "mergetag" in this case), SP, the first line of payload, LF, and all
the remaining lines have a SP inserted at the beginning.
In hindsight, it would have been better to make "merge --continue" as the
way to continue from such an interrupted merge, not "commit", but this is
a backward compatibility baggage we would need to carry around for now.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/commit.c')
-rw-r--r-- | builtin/commit.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/builtin/commit.c b/builtin/commit.c index c46f2d18e1..4688a738f7 100644 --- a/builtin/commit.c +++ b/builtin/commit.c @@ -1425,7 +1425,6 @@ int cmd_commit(int argc, const char **argv, const char *prefix) pptr = &commit_list_insert(c->item, pptr)->next; } else if (whence == FROM_MERGE) { struct strbuf m = STRBUF_INIT; - struct commit *commit; FILE *fp; if (!reflog_msg) @@ -1436,11 +1435,12 @@ int cmd_commit(int argc, const char **argv, const char *prefix) die_errno(_("could not open '%s' for reading"), git_path("MERGE_HEAD")); while (strbuf_getline(&m, fp, '\n') != EOF) { - unsigned char sha1[20]; - if (get_sha1_hex(m.buf, sha1) < 0) + struct commit *parent; + + parent = get_merge_parent(m.buf); + if (!parent) die(_("Corrupt MERGE_HEAD file (%s)"), m.buf); - commit = lookup_commit_or_die(sha1, "MERGE_HEAD"); - pptr = &commit_list_insert(commit, pptr)->next; + pptr = &commit_list_insert(parent, pptr)->next; } fclose(fp); strbuf_release(&m); |