diff options
author | Junio C Hamano <gitster@pobox.com> | 2012-04-29 17:51:30 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-04-29 17:51:30 -0700 |
commit | 6a8989709efbd6d5187005497907264fde026ae9 (patch) | |
tree | 9a575ab5e173c5e5f0203a6053531eb3d0055bec /commit.c | |
parent | 5fa8bf6bf9d20ccb37ed46ec7027a9ac64b2a2a7 (diff) | |
parent | a81a7fbc1a423b112158c2d8647ee80caba108ef (diff) | |
download | git-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.c | 42 |
1 files changed, 27 insertions, 15 deletions
@@ -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; +} |