merge: record tag objects without peeling in MERGE_HEAD
Otherwise, "git commit" wouldn't have a way to tell that we were in the middle of merging an annotated or signed tag, not a plain commit, after "git merge" stops to ask the user to resolve conflicts. Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
ae8e4c9ce1
commit
274a5c06d5
|
@ -1045,9 +1045,16 @@ static void write_merge_state(void)
|
||||||
struct commit_list *j;
|
struct commit_list *j;
|
||||||
struct strbuf buf = STRBUF_INIT;
|
struct strbuf buf = STRBUF_INIT;
|
||||||
|
|
||||||
for (j = remoteheads; j; j = j->next)
|
for (j = remoteheads; j; j = j->next) {
|
||||||
strbuf_addf(&buf, "%s\n",
|
unsigned const char *sha1;
|
||||||
sha1_to_hex(j->item->object.sha1));
|
struct commit *c = j->item;
|
||||||
|
if (c->util && merge_remote_util(c)->obj) {
|
||||||
|
sha1 = merge_remote_util(c)->obj->sha1;
|
||||||
|
} else {
|
||||||
|
sha1 = c->object.sha1;
|
||||||
|
}
|
||||||
|
strbuf_addf(&buf, "%s\n", sha1_to_hex(sha1));
|
||||||
|
}
|
||||||
fd = open(git_path("MERGE_HEAD"), O_WRONLY | O_CREAT, 0666);
|
fd = open(git_path("MERGE_HEAD"), O_WRONLY | O_CREAT, 0666);
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
die_errno(_("Could not open '%s' for writing"),
|
die_errno(_("Could not open '%s' for writing"),
|
||||||
|
|
|
@ -96,7 +96,11 @@ verify_parents () {
|
||||||
|
|
||||||
verify_mergeheads () {
|
verify_mergeheads () {
|
||||||
printf '%s\n' "$@" >mergehead.expected &&
|
printf '%s\n' "$@" >mergehead.expected &&
|
||||||
test_cmp mergehead.expected .git/MERGE_HEAD
|
while read sha1 rest
|
||||||
|
do
|
||||||
|
git rev-parse $sha1
|
||||||
|
done <.git/MERGE_HEAD >mergehead.actual &&
|
||||||
|
test_cmp mergehead.expected mergehead.actual
|
||||||
}
|
}
|
||||||
|
|
||||||
verify_no_mergehead () {
|
verify_no_mergehead () {
|
||||||
|
|
Loading…
Reference in New Issue