Re: [PATCH v2 1/5] commit-reach: reduce requirements for remove_redundant()
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Feb 1, 2021, 19:51 UTC
- Message-ID
- <xmqqmtwnlg6f.fsf@gitster.c.googlers.com>
- In-Reply-To
- <649f6799e6bfa0662ed5a4debf915053598fe142.1612183647.git.gitgitgadget@gmail.com>
"Derrick Stolee via GitGitGadget" <gitgitgadget@gmail.com> writes:
Show 13 quoted lines
> From: Derrick Stolee <dstolee@microsoft.com> > > 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 <dstolee@microsoft.com> > ---
Makes sense, especially since this is a file-local/static helper function, we have reasonably tight control over its callers.
Will queue. Thanks.
Show 31 quoted lines
> 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);