From: Patrick Steinhardt <ps@pks.im>
To: Taylor Blau <me@ttaylorr.com>
Cc: Junio C Hamano <gitster@pobox.com>,
git@vger.kernel.org, Jeff King <peff@peff.net>
Subject: Re: [PATCH 7/8] builtin/repack.c: drop `DELETE_PACK` macro
Date: Thu, 7 Sep 2023 10:19:50 +0200 [thread overview]
Message-ID: <ZPmHpqHNzXF0Jbu6@tanuki> (raw)
In-Reply-To: <ZPi1c98o2fKB/U+e@nand.local>
[-- Attachment #1: Type: text/plain, Size: 4512 bytes --]
On Wed, Sep 06, 2023 at 01:22:59PM -0400, Taylor Blau wrote:
> On Wed, Sep 06, 2023 at 10:05:37AM -0700, Junio C Hamano wrote:
> > Taylor Blau <me@ttaylorr.com> writes:
> >
> > > Signed-off-by: Taylor Blau <me@ttaylorr.com>
> > > ---
> > > builtin/repack.c | 18 ++++++++++--------
> > > 1 file changed, 10 insertions(+), 8 deletions(-)
> >
> > The reason being...?
>
> Wow, I have no idea how this got sent out without a commit message! At
> least it was signed off ;-).
>
> Here's a replacement that I cooked up, with your Helped-by. Let me know
> if you want to replace this patch manually, or if you'd prefer a reroll
> of the series. Either is fine with me! :-)
Personally I think that the original version is still more readable. If
you simply see `if (item->util)` you don't really have any indicator
what this actually means, whereas previously the more verbose check for
`if ((uintptr)item->util & DELETE_PACK)` gives the reader a nice hint
what this may be about.
If the intent is to make this check a bit prettier, how about we instead
introduce a helper function like the following:
```
static inline int pack_marked_for_deletion(const struct string_list_item *item)
{
return (uintptr) item->util & DELETE_PACK;
}
```
Other than that the rest of this series looks good to me, thanks.
Patrick
> --- 8< ---
> Subject: [PATCH] builtin/repack.c: treat string_list_item util as booleans
>
> The `->util` field corresponding to each string_list_item used to track
> the existence of some pack at the beginning of a repack operation was
> originally intended to be used as a bitfield.
>
> This bitfield tracked:
>
> - (1 << 0): whether or not the pack should be deleted
> - (1 << 1): whether or not the pack is cruft
>
> The previous commit removed the use of the second bit, meaning that we
> can treat this field as a boolean instead of a bitset.
>
> Helped-by: Junio C Hamano <gitster@pobox.com>
> Signed-off-by: Taylor Blau <me@ttaylorr.com>
> ---
> builtin/repack.c | 18 +++++++++++-------
> 1 file changed, 11 insertions(+), 7 deletions(-)
>
> diff --git a/builtin/repack.c b/builtin/repack.c
> index 478fab96c9..575e69b020 100644
> --- a/builtin/repack.c
> +++ b/builtin/repack.c
> @@ -26,7 +26,7 @@
> #define LOOSEN_UNREACHABLE 2
> #define PACK_CRUFT 4
>
> -#define DELETE_PACK 1
> +#define DELETE_PACK ((void*)(uintptr_t)1)
>
> static int pack_everything;
> static int delta_base_offset = 1;
> @@ -96,6 +96,10 @@ static int repack_config(const char *var, const char *value,
>
> struct existing_packs {
> struct string_list kept_packs;
> + /*
> + * for both non_kept_packs, and cruft_packs, a non-NULL
> + * 'util' field indicates the pack should be deleted.
> + */
> struct string_list non_kept_packs;
> struct string_list cruft_packs;
> };
> @@ -130,7 +134,7 @@ static void mark_packs_for_deletion_1(struct string_list *names,
> * (if `-d` was given).
> */
> if (!string_list_has_string(names, sha1))
> - item->util = (void*)(uintptr_t)((size_t)item->util | DELETE_PACK);
> + item->util = DELETE_PACK;
> }
> }
>
> @@ -158,7 +162,7 @@ static void remove_redundant_packs_1(struct string_list *packs)
> {
> struct string_list_item *item;
> for_each_string_list_item(item, packs) {
> - if (!((uintptr_t)item->util & DELETE_PACK))
> + if (!item->util)
> continue;
> remove_redundant_pack(packdir, item->string);
> }
> @@ -695,20 +699,20 @@ static void midx_included_packs(struct string_list *include,
>
> for_each_string_list_item(item, &existing->cruft_packs) {
> /*
> - * no need to check DELETE_PACK, since we're not
> - * doing an ALL_INTO_ONE repack
> + * no need to check for deleted packs, since we're
> + * not doing an ALL_INTO_ONE repack
> */
> string_list_insert(include, xstrfmt("%s.idx", item->string));
> }
> } else {
> for_each_string_list_item(item, &existing->non_kept_packs) {
> - if ((uintptr_t)item->util & DELETE_PACK)
> + if (item->util)
> continue;
> string_list_insert(include, xstrfmt("%s.idx", item->string));
> }
>
> for_each_string_list_item(item, &existing->cruft_packs) {
> - if ((uintptr_t)item->util & DELETE_PACK)
> + if (item->util)
> continue;
> string_list_insert(include, xstrfmt("%s.idx", item->string));
> }
> --
> 2.38.0.16.g393fd4c6db
>
> --- >8 ---
>
> Thanks,
> Taylor
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2023-09-07 15:51 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-05 20:36 [PATCH 0/8] repack: refactor pack snapshot-ing logic Taylor Blau
2023-09-05 20:36 ` [PATCH 1/8] builtin/repack.c: extract structure to store existing packs Taylor Blau
2023-09-07 7:54 ` Jeff King
2023-09-05 20:36 ` [PATCH 2/8] builtin/repack.c: extract marking packs for deletion Taylor Blau
2023-09-07 7:59 ` Jeff King
2023-09-07 22:10 ` Taylor Blau
2023-09-05 20:36 ` [PATCH 3/8] builtin/repack.c: extract redundant pack cleanup for --geometric Taylor Blau
2023-09-07 8:00 ` Jeff King
2023-09-05 20:36 ` [PATCH 4/8] builtin/repack.c: extract redundant pack cleanup for existing packs Taylor Blau
2023-09-07 8:02 ` Jeff King
2023-09-05 20:36 ` [PATCH 5/8] builtin/repack.c: extract `has_existing_non_kept_packs()` Taylor Blau
2023-09-07 8:04 ` Jeff King
2023-09-05 20:36 ` [PATCH 6/8] builtin/repack.c: store existing cruft packs separately Taylor Blau
2023-09-07 8:09 ` Jeff King
2023-09-05 20:36 ` [PATCH 7/8] builtin/repack.c: drop `DELETE_PACK` macro Taylor Blau
2023-09-06 17:05 ` Junio C Hamano
2023-09-06 17:22 ` Taylor Blau
2023-09-07 8:19 ` Patrick Steinhardt [this message]
2023-09-07 18:16 ` Junio C Hamano
2023-09-07 8:58 ` Jeff King
2023-09-05 20:37 ` [PATCH 8/8] builtin/repack.c: extract common cruft pack loop Taylor Blau
2023-09-07 9:00 ` [PATCH 0/8] repack: refactor pack snapshot-ing logic Jeff King
2023-09-13 19:17 ` [PATCH v2 " Taylor Blau
2023-09-13 19:17 ` [PATCH v2 1/8] builtin/repack.c: extract structure to store existing packs Taylor Blau
2023-09-13 19:17 ` [PATCH v2 2/8] builtin/repack.c: extract marking packs for deletion Taylor Blau
2023-09-13 19:17 ` [PATCH v2 3/8] builtin/repack.c: extract redundant pack cleanup for --geometric Taylor Blau
2023-09-13 19:17 ` [PATCH v2 4/8] builtin/repack.c: extract redundant pack cleanup for existing packs Taylor Blau
2023-09-13 19:17 ` [PATCH v2 5/8] builtin/repack.c: extract `has_existing_non_kept_packs()` Taylor Blau
2023-09-15 10:02 ` Christian Couder
2023-09-13 19:17 ` [PATCH v2 6/8] builtin/repack.c: store existing cruft packs separately Taylor Blau
2023-09-13 19:18 ` [PATCH v2 7/8] builtin/repack.c: avoid directly inspecting "util" Taylor Blau
2023-09-13 19:18 ` [PATCH v2 8/8] builtin/repack.c: extract common cruft pack loop Taylor Blau
2023-09-13 19:44 ` [PATCH v2 0/8] repack: refactor pack snapshot-ing logic Junio C Hamano
2023-09-14 0:07 ` Jeff King
2023-09-14 10:33 ` Patrick Steinhardt
2023-09-14 11:10 ` Christian Couder
2023-09-14 18:01 ` Taylor Blau
2023-09-15 5:56 ` Christian Couder
2023-09-15 10:09 ` Christian Couder
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZPmHpqHNzXF0Jbu6@tanuki \
--to=ps@pks.im \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=me@ttaylorr.com \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.