git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [GSoC][PATCH 1/5] builtin/pack-refs: factor out core logic into a helper

From
Meet Soni <meetsoni3017@gmail.com>
Date
Sep 3, 2025, 03:56 UTC
Message-ID
<CAPhwyn1qm3CmYmupEdCzisdAC_uteWeBN05oZk0dqdPCty34yw@mail.gmail.com>
In-Reply-To
<aLbEWSHUotkmSiCq@pks.im>
On Tue, 2 Sept 2025 at 15:48, Patrick Steinhardt <ps@pks.im> wrote:
Show 32 quoted lines
>
> On Tue, Aug 26, 2025 at 01:06:41PM +0530, Meet Soni wrote:
> > The implementation of `git pack-refs` is monolithic within
> > `cmd_pack_refs()`, making it impossible to share its logic with other
> > commands. To enable code reuse for the upcoming `git refs optimize`
> > subcommand, refactor the core logic into a shared helper function.
> >
> > Introduce a new `pack-refs.h` header to define the public interface
> > for this shared logic. It contains the declaration for a new helper
> > function, `pack_refs_core()`, and a macro for the common usage
> > options.
> >
> > Move the option parsing and packing logic from `cmd_pack_refs()` into a
> > new helper function named `pack_refs_core()`. This helper is made
> > generic by accepting the command's usage string as a parameter.
> >
> > The original `cmd_pack_refs()` is simplified to a thin wrapper that
> > is only responsible for defining its specific usage array and calling
> > the shared helper.
> >
> > Mentored-by: Patrick Steinhardt <ps@pks.im>
> > Mentored-by: shejialuo <shejialuo@gmail.com>
> > Signed-off-by: Meet Soni <meetsoni3017@gmail.com>
> > ---
> >  builtin/pack-refs.c | 31 ++++++++++++++++++++-----------
> >  pack-refs.h         | 22 ++++++++++++++++++++++
> >  2 files changed, 42 insertions(+), 11 deletions(-)
> >  create mode 100644 pack-refs.h
>
> Shouldn't that header live in "builtin/pack-refs.h"? Makes it way more
> obvious that it exposes functions from "builtin/pack-refs.c".
>

I couldn't find any header files in the builtin/ directory. Also, since we placed the for-each-ref.h file in the root directory in our previous series, I decided to do the same here.

Show 36 quoted lines
> > diff --git a/pack-refs.h b/pack-refs.h
> > new file mode 100644
> > index 0000000000..ba51d154e3
> > --- /dev/null
> > +++ b/pack-refs.h
> > @@ -0,0 +1,22 @@
> > +#ifndef PACK_REFS_H
> > +#define PACK_REFS_H
> > +
> > +struct repository;
>
> Let's add a newline here.
>
> > +/*
> > + * Shared usage string for options common to git-pack-refs(1)
> > + * and git-refs-optimize(1). The command-specific part (e.g., "git refs optimize ")
> > + * must be prepended by the caller.
> > + */
> > +#define PACK_REFS_OPTS \
> > +     "[--all] [--no-prune] [--auto] [--include <pattern>] [--exclude <pattern>]"
> > +
> > +/*
> > + * The core logic for pack-refs and its clones
>
> And a dot after to terminate the sentence.
>
> > + */
> > +int pack_refs_core(int argc,
> > +                const char **argv,
> > +                const char *prefix,
> > +                struct repository *repo,
> > +                const char * const *usage_opts);
> > +
> > +#endif /* PACK_REFS_H */
>
> Patrick

Thanks Meet

Previous: Patrick SteinhardtNext: Patrick Steinhardt
Message 4 of 17 in “Add refs optimize subcommand”
  1. Meet SoniAug 26, 2025
  2. [GSoC][PATCH 1/5] builtin/pack-refs: factor out core logic into a helperMeet Soni, Aug 26, 2025
  3. Patrick SteinhardtSep 2, 2025
  4. Meet SoniSep 3, 2025
  5. Patrick SteinhardtSep 3, 2025
  6. Junio C HamanoSep 3, 2025
  7. Patrick SteinhardtSep 3, 2025
  8. Junio C HamanoSep 3, 2025
  9. [GSoC][PATCH 2/5] doc: factor out common optionMeet Soni, Aug 26, 2025
  10. [GSoC][PATCH 3/5] builtin/refs: add optimize subcommandMeet Soni, Aug 26, 2025
  11. Patrick SteinhardtSep 2, 2025
  12. [GSoC][PATCH 4/5] t0601: refactor tests to be shareableMeet Soni, Aug 26, 2025
  13. [GSoC][PATCH 5/5] t: add test for git refs optimize subcommandMeet Soni, Aug 26, 2025
  14. shejialuoAug 26, 2025
  15. Meet SoniAug 31, 2025
  16. Patrick SteinhardtSep 2, 2025
  17. Meet SoniSep 3, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.