aboutsummaryrefslogtreecommitdiff
path: root/commit.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2012-04-29 17:51:30 -0700
committerJunio C Hamano <gitster@pobox.com>2012-04-29 17:51:30 -0700
commit6a8989709efbd6d5187005497907264fde026ae9 (patch)
tree9a575ab5e173c5e5f0203a6053531eb3d0055bec /commit.c
parent5fa8bf6bf9d20ccb37ed46ec7027a9ac64b2a2a7 (diff)
parenta81a7fbc1a423b112158c2d8647ee80caba108ef (diff)
downloadgit-6a8989709efbd6d5187005497907264fde026ae9.tar.gz
git-6a8989709efbd6d5187005497907264fde026ae9.tar.xz
Merge branch 'rs/commit-list-append'
There is no need for "commit_list_reverse()" function that only invites inefficient code. By René Scharfe * rs/commit-list-append: commit: remove commit_list_reverse() revision: append to list instead of insert and reverse sequencer: export commit_list_append()
Diffstat (limited to 'commit.c')
-rw-r--r--commit.c42
1 files changed, 27 insertions, 15 deletions
diff --git a/commit.c b/commit.c
index b80a45281..9ed36c7db 100644
--- a/commit.c
+++ b/commit.c
@@ -361,21 +361,6 @@ struct commit_list *commit_list_insert(struct commit *item, struct commit_list *
return new_list;
}
-void commit_list_reverse(struct commit_list **list_p)
-{
- struct commit_list *prev = NULL, *curr = *list_p, *next;
-
- if (!list_p)
- return;
- while (curr) {
- next = curr->next;
- curr->next = prev;
- prev = curr;
- curr = next;
- }
- *list_p = prev;
-}
-
unsigned commit_list_count(const struct commit_list *l)
{
unsigned c = 0;
@@ -1214,3 +1199,30 @@ struct commit *get_merge_parent(const char *name)
}
return commit;
}
+
+/*
+ * Append a commit to the end of the commit_list.
+ *
+ * next starts by pointing to the variable that holds the head of an
+ * empty commit_list, and is updated to point to the "next" field of
+ * the last item on the list as new commits are appended.
+ *
+ * Usage example:
+ *
+ * struct commit_list *list;
+ * struct commit_list **next = &list;
+ *
+ * next = commit_list_append(c1, next);
+ * next = commit_list_append(c2, next);
+ * assert(commit_list_count(list) == 2);
+ * return list;
+ */
+struct commit_list **commit_list_append(struct commit *commit,
+ struct commit_list **next)
+{
+ struct commit_list *new = xmalloc(sizeof(struct commit_list));
+ new->item = commit;
+ *next = new;
+ new->next = NULL;
+ return &new->next;
+}