Re: [PATCH v3 3/5] pack-objects: fix handling of multiple --filter options
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Nov 30, 2022, 01:09 UTC
- Message-ID
- <xmqq7czd2qq6.fsf@gitster.g>
- In-Reply-To
- <6c7ef5fb-59b5-df16-036d-9a9a3d987cb0@web.de>
René Scharfe <l.s.r@web.de> writes:
Show 5 quoted lines
> Since 5cb28270a1 (pack-objects: lazily set up "struct rev_info", don't > leak, 2022-03-28) --filter options given to git pack-objects overrule > earlier ones, letting only the leftmost win and leaking the memory > allocated for earlier ones. Fix that by only initializing the rev_info > struct once.
I think "leftmost" -> "rightmost", if your command line goes from left to right? Or "leftmost" -> "last" (e.g. "last one wins" over "earlier ones")?
Show 35 quoted lines
> Signed-off-by: René Scharfe <l.s.r@web.de>
> ---
> builtin/pack-objects.c | 3 ++-
> t/t5317-pack-objects-filter-objects.sh | 2 +-
> 2 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c
> index 573d0b20b7..c702c09dd4 100644
> --- a/builtin/pack-objects.c
> +++ b/builtin/pack-objects.c
> @@ -4158,7 +4158,8 @@ static struct list_objects_filter_options *po_filter_revs_init(void *value)
> {
> struct po_filter_data *data = value;
>
> - repo_init_revisions(the_repository, &data->revs, NULL);
> + if (!data->have_revs)
> + repo_init_revisions(the_repository, &data->revs, NULL);
> data->have_revs = 1;
>
> return &data->revs.filter;
> diff --git a/t/t5317-pack-objects-filter-objects.sh b/t/t5317-pack-objects-filter-objects.sh
> index 25faebaada..5b707d911b 100755
> --- a/t/t5317-pack-objects-filter-objects.sh
> +++ b/t/t5317-pack-objects-filter-objects.sh
> @@ -265,7 +265,7 @@ test_expect_success 'verify normal and blob:limit packfiles have same commits/tr
> test_cmp expected observed
> '
>
> -test_expect_failure 'verify small limit and big limit results in small limit' '
> +test_expect_success 'verify small limit and big limit results in small limit' '
> git -C r2 ls-files -s large.1000 >ls_files_result &&
> test_parse_ls_files_stage_oids <ls_files_result |
> sort >expected &&
> --
> 2.38.1