commit: simplify building parents list

Push pptr down into the FROM_MERGE branch of the if/else statement,
where it's actually used, and call commit_list_append() for appending
elements instead of playing tricks with commit_list_insert().  Call
copy_commit_list() in the amend branch instead of open-coding it.  Don't
bother setting pptr in the final branch as it's not used thereafter.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
René Scharfe 2016-10-29 14:55:36 +02:00 коммит произвёл Junio C Hamano
Родитель 0b65a8dbdb
Коммит de9f7fa3b0
1 изменённых файлов: 6 добавлений и 8 удалений

Просмотреть файл

@ -1639,7 +1639,7 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
const char *index_file, *reflog_msg; const char *index_file, *reflog_msg;
char *nl; char *nl;
unsigned char sha1[20]; unsigned char sha1[20];
struct commit_list *parents = NULL, **pptr = &parents; struct commit_list *parents = NULL;
struct stat statbuf; struct stat statbuf;
struct commit *current_head = NULL; struct commit *current_head = NULL;
struct commit_extra_header *extra = NULL; struct commit_extra_header *extra = NULL;
@ -1681,20 +1681,18 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
if (!reflog_msg) if (!reflog_msg)
reflog_msg = "commit (initial)"; reflog_msg = "commit (initial)";
} else if (amend) { } else if (amend) {
struct commit_list *c;
if (!reflog_msg) if (!reflog_msg)
reflog_msg = "commit (amend)"; reflog_msg = "commit (amend)";
for (c = current_head->parents; c; c = c->next) parents = copy_commit_list(current_head->parents);
pptr = &commit_list_insert(c->item, pptr)->next;
} else if (whence == FROM_MERGE) { } else if (whence == FROM_MERGE) {
struct strbuf m = STRBUF_INIT; struct strbuf m = STRBUF_INIT;
FILE *fp; FILE *fp;
int allow_fast_forward = 1; int allow_fast_forward = 1;
struct commit_list **pptr = &parents;
if (!reflog_msg) if (!reflog_msg)
reflog_msg = "commit (merge)"; reflog_msg = "commit (merge)";
pptr = &commit_list_insert(current_head, pptr)->next; pptr = commit_list_append(current_head, pptr);
fp = fopen(git_path_merge_head(), "r"); fp = fopen(git_path_merge_head(), "r");
if (fp == NULL) if (fp == NULL)
die_errno(_("could not open '%s' for reading"), die_errno(_("could not open '%s' for reading"),
@ -1705,7 +1703,7 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
parent = get_merge_parent(m.buf); parent = get_merge_parent(m.buf);
if (!parent) if (!parent)
die(_("Corrupt MERGE_HEAD file (%s)"), m.buf); die(_("Corrupt MERGE_HEAD file (%s)"), m.buf);
pptr = &commit_list_insert(parent, pptr)->next; pptr = commit_list_append(parent, pptr);
} }
fclose(fp); fclose(fp);
strbuf_release(&m); strbuf_release(&m);
@ -1722,7 +1720,7 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
reflog_msg = (whence == FROM_CHERRY_PICK) reflog_msg = (whence == FROM_CHERRY_PICK)
? "commit (cherry-pick)" ? "commit (cherry-pick)"
: "commit"; : "commit";
pptr = &commit_list_insert(current_head, pptr)->next; commit_list_insert(current_head, &parents);
} }
/* Finally, get the commit message */ /* Finally, get the commit message */