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
Patrick Steinhardt <ps@pks.im>
Date
Sep 3, 2025, 04:37 UTC
Message-ID
<aLfF-GWlp3ESnSU-@pks.im>
In-Reply-To
<CAPhwyn1qm3CmYmupEdCzisdAC_uteWeBN05oZk0dqdPCty34yw@mail.gmail.com>
On Wed, Sep 03, 2025 at 09:26:37AM +0530, Meet Soni wrote:
Show 36 quoted lines
> On Tue, 2 Sept 2025 at 15:48, Patrick Steinhardt <ps@pks.im> wrote:
> >
> > 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.

Hm. Honestly, I'd much rather also move "for-each-ref.h" into "builtin/", as well. The logic is not part of libgit.a and specific to the builtins, so I think it's preferable to have it in that directory.

Patrick
Previous: Meet SoniNext: Junio C Hamano
Message 5 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.