Re: [PATCH v2 1/5] commit-reach: reduce requirements for remove_redundant()
From: Junio C Hamano <hidden>
Date: 2021-02-01 19:52:58
"Derrick Stolee via GitGitGadget" [off-list ref] writes:
From: Derrick Stolee <redacted> Remove a comment at the beggining of remove_redundant() that mentions a reordering of the input array to have the initial segment be the independent commits and the final segment be the redundant commits. While this behavior is followed in remove_redundant(), no callers rely on that behavior. Remove the final loop that copies this final segment and update the comment to match the new behavior. Signed-off-by: Derrick Stolee <redacted> ---
Makes sense, especially since this is a file-local/static helper function, we have reasonably tight control over its callers. Will queue. Thanks.
quoted hunk
commit-reach.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-)diff --git a/commit-reach.c b/commit-reach.c index e38771ca5a1..9af51fe7e07 100644 --- a/commit-reach.c +++ b/commit-reach.c@@ -160,9 +160,10 @@ static int remove_redundant(struct repository *r, struct commit **array, int cnt { /* * Some commit in the array may be an ancestor of - * another commit. Move such commit to the end of - * the array, and return the number of commits that - * are independent from each other. + * another commit. Move the independent commits to the + * beginning of 'array' and return their number. Callers + * should not rely upon the contents of 'array' after + * that number. */ struct commit **work; unsigned char *redundant;@@ -209,9 +210,6 @@ static int remove_redundant(struct repository *r, struct commit **array, int cnt for (i = filled = 0; i < cnt; i++) if (!redundant[i]) array[filled++] = work[i]; - for (j = filled, i = 0; i < cnt; i++) - if (redundant[i]) - array[j++] = work[i]; free(work); free(redundant); free(filled_index);