mirror of
https://github.com/git-for-windows/git.git
synced 2026-02-03 18:59:59 -06:00
commit-reach: use commit_stack
Use commit_stack instead of open-coding it. Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
3e456f1d8a
commit
0e445956f4
@ -283,8 +283,8 @@ static int remove_redundant_with_gen(struct repository *r,
|
||||
{
|
||||
size_t i, count_non_stale = 0, count_still_independent = cnt;
|
||||
timestamp_t min_generation = GENERATION_NUMBER_INFINITY;
|
||||
struct commit **walk_start, **sorted;
|
||||
size_t walk_start_nr = 0, walk_start_alloc = cnt;
|
||||
struct commit **sorted;
|
||||
struct commit_stack walk_start = COMMIT_STACK_INIT;
|
||||
size_t min_gen_pos = 0;
|
||||
|
||||
/*
|
||||
@ -298,7 +298,7 @@ static int remove_redundant_with_gen(struct repository *r,
|
||||
QSORT(sorted, cnt, compare_commits_by_gen);
|
||||
min_generation = commit_graph_generation(sorted[0]);
|
||||
|
||||
ALLOC_ARRAY(walk_start, walk_start_alloc);
|
||||
commit_stack_grow(&walk_start, cnt);
|
||||
|
||||
/* Mark all parents of the input as STALE */
|
||||
for (i = 0; i < cnt; i++) {
|
||||
@ -312,18 +312,17 @@ static int remove_redundant_with_gen(struct repository *r,
|
||||
repo_parse_commit(r, parents->item);
|
||||
if (!(parents->item->object.flags & STALE)) {
|
||||
parents->item->object.flags |= STALE;
|
||||
ALLOC_GROW(walk_start, walk_start_nr + 1, walk_start_alloc);
|
||||
walk_start[walk_start_nr++] = parents->item;
|
||||
commit_stack_push(&walk_start, parents->item);
|
||||
}
|
||||
parents = parents->next;
|
||||
}
|
||||
}
|
||||
|
||||
QSORT(walk_start, walk_start_nr, compare_commits_by_gen);
|
||||
QSORT(walk_start.items, walk_start.nr, compare_commits_by_gen);
|
||||
|
||||
/* remove STALE bit for now to allow walking through parents */
|
||||
for (i = 0; i < walk_start_nr; i++)
|
||||
walk_start[i]->object.flags &= ~STALE;
|
||||
for (i = 0; i < walk_start.nr; i++)
|
||||
walk_start.items[i]->object.flags &= ~STALE;
|
||||
|
||||
/*
|
||||
* Start walking from the highest generation. Hopefully, it will
|
||||
@ -331,12 +330,12 @@ static int remove_redundant_with_gen(struct repository *r,
|
||||
* terminate early. Otherwise, we will do the same amount of work
|
||||
* as before.
|
||||
*/
|
||||
for (i = walk_start_nr; i && count_still_independent > 1; i--) {
|
||||
for (i = walk_start.nr; i && count_still_independent > 1; i--) {
|
||||
/* push the STALE bits up to min generation */
|
||||
struct commit_list *stack = NULL;
|
||||
|
||||
commit_list_insert(walk_start[i - 1], &stack);
|
||||
walk_start[i - 1]->object.flags |= STALE;
|
||||
commit_list_insert(walk_start.items[i - 1], &stack);
|
||||
walk_start.items[i - 1]->object.flags |= STALE;
|
||||
|
||||
while (stack) {
|
||||
struct commit_list *parents;
|
||||
@ -390,8 +389,8 @@ static int remove_redundant_with_gen(struct repository *r,
|
||||
}
|
||||
|
||||
/* clear marks */
|
||||
clear_commit_marks_many(walk_start_nr, walk_start, STALE);
|
||||
free(walk_start);
|
||||
clear_commit_marks_many(walk_start.nr, walk_start.items, STALE);
|
||||
commit_stack_clear(&walk_start);
|
||||
|
||||
*dedup_cnt = count_non_stale;
|
||||
return 0;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user