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

Re: [PATCH] builtin: replace the_repository parameter in is_bare_repository()

From
Hardik Kumar <hardikxk@gmail.com>
Date
Aug 27, 2026, 20:09 UTC
Message-ID
<DKZZYSTLY6TX.2TDQEBBOG5IAV@gmail.com>
In-Reply-To
<xmqqh5kf8hqc.fsf@gitster.g>
On Fri Aug 28, 2026 at 1:21 AM IST, Junio C Hamano wrote:
Show 34 quoted lines
> I guess this was a bit too short, so let me explain in a bit more
> detail.
>
>>> diff --git a/builtin/blame.c b/builtin/blame.c
>>> index 48d5251c6d..dbf4b4ffc7 100644
>>> --- a/builtin/blame.c
>>> +++ b/builtin/blame.c
>>> @@ -957,7 +957,7 @@ static void build_ignorelist(struct blame_scoreboard *sb,
>>>  int cmd_blame(int argc,
>>>  	      const char **argv,
>>>  	      const char *prefix,
>>> -	      struct repository *repo UNUSED)
>>> +	      struct repository *repo)
>>>  {
>>>  	struct rev_info revs;
>>>  	char *path = NULL;
>>> @@ -1187,7 +1187,7 @@ int cmd_blame(int argc,
>>>  
>>>  	revs.disable_stdin = 1;
>>>  	setup_revisions(argc, argv, &revs, NULL);
>>> -	if (!revs.pending.nr && is_bare_repository(the_repository)) {
>>> +	if (!revs.pending.nr && is_bare_repository(repo)) {
>>>  		struct commit *head_commit;
>>>  		struct object_id head_oid;
>
> There are a handful of uses of the_repository before the execution
> reaches here.  But you left them unmodified.
>
> The original code used to consistently used the_repository.  Here
> you changed it to use "repo".  In practice, they are most likely the
> same when "repo" is not NULL, so in that sense, this may not be
> breaking anything, but you must ask yourself what the point is,
> unless you convert all uses of the_repository with "repo".  It does
> not help libification effort at all.

My main goal here was to start small with by removing the dependence from `the_repository`. The other instances are obivous left out which makes the patch seem inconsistent but I suppose those functions are the ones that require execution before the flow ever checks for the value of `repo` and so they rely on the global one instead.

Show 5 quoted lines
> In general, builtin/foo.c::cmd_foo() are concrete programs that work
> on specific repository (i.e., the_repository), and there is not much
> reason to rewrite the use of the_repository to use "repo" given by
> the caller which is git potty.  You'd also need to deal with the
> case where "repo" is NULL (hint: "cd / && git foo -h").

Right, but would safety check be required for single instance or better to find and work on only the specific ones which could lead to an exception.

>
> They are quite different from other parts of the system, things
> outside builtin/, many of which are general utility/helper routines,
> many of which should be designed to work with given repository.
Previous: Junio C HamanoNext: Junio C Hamano
Message 4 of 47 in “builtin: replace the_repository parameter in is_bare_repository()”
  1. builtin: replace the_repository parameter in is_bare_repository()Hardik Kumar, Aug 27, 2026
  2. Junio C HamanoAug 27, 2026
  3. Junio C HamanoAug 27, 2026
  4. Hardik KumarAug 27, 2026
  5. Junio C HamanoAug 27, 2026
  6. Ben KnobleAug 27, 2026
  7. Junio C HamanoAug 27, 2026
  8. D. Ben KnobleAug 28, 2026
  9. Junio C HamanoAug 28, 2026
  10. 0/8 More sensible checkout/switch/restore code refactoringJunio C Hamano, Aug 28, 2026
  11. 1/8 checkout: pass cb_option explicitly to branch name parsersJunio C Hamano, Aug 28, 2026
  12. 2/8 checkout: validate new branch name in checkout_branch()Junio C Hamano, Aug 28, 2026
  13. 3/8 checkout: validate stage and merge option compatibility in checkout_paths()Junio C Hamano, Aug 28, 2026
  14. 4/8 checkout: extract option validation and pathspec helpersJunio C Hamano, Aug 28, 2026
  15. 5/8 checkout: extract branch setup and tracking helpersJunio C Hamano, Aug 28, 2026
  16. 6/8 checkout: restructure switch, restore, and checkout entrypointsJunio C Hamano, Aug 28, 2026
  17. 7/8 checkout: wrap overly long linesJunio C Hamano, Aug 28, 2026
  18. Junio C HamanoAug 28, 2026
  19. Junio C HamanoAug 29, 2026
  20. 8/8 checkout: move post_checkout_hook() to checkout.cJunio C Hamano, Aug 28, 2026
  21. Junio C HamanoAug 28, 2026
  22. Junio C HamanoAug 29, 2026
  23. 0/8 More sensible checkout/switch/restore code refactoringJunio C Hamano, Aug 30, 2026
  24. 1/8 checkout: pass cb_option explicitly to branch name parsersJunio C Hamano, Aug 30, 2026
  25. Karthik NayakSep 1, 2026
  26. 2/8 checkout: validate new branch name in checkout_branch()Junio C Hamano, Aug 30, 2026
  27. Karthik NayakSep 1, 2026
  28. 3/8 checkout: validate stage and merge option compatibility in checkout_paths()Junio C Hamano, Aug 30, 2026
  29. Karthik NayakSep 1, 2026
  30. Junio C HamanoSep 1, 2026
  31. Karthik NayakSep 2, 2026
  32. Junio C HamanoSep 2, 2026
  33. Karthik NayakSep 3, 2026
  34. 4/8 checkout: extract option validation and pathspec helpersJunio C Hamano, Aug 30, 2026
  35. 5/8 checkout: extract branch setup and tracking helpersJunio C Hamano, Aug 30, 2026
  36. 6/8 checkout: restructure switch, restore, and checkout entrypointsJunio C Hamano, Aug 30, 2026
  37. Karthik NayakSep 1, 2026
  38. Junio C HamanoSep 1, 2026
  39. Karthik NayakSep 2, 2026
  40. 7/8 checkout: wrap overly long linesJunio C Hamano, Aug 30, 2026
  41. 8/8 checkout: move post_checkout_hook() to checkout.cJunio C Hamano, Aug 30, 2026
  42. D. Ben KnobleAug 29, 2026
  43. do not pass "repo" to builtin commmand implementationsJunio C Hamano, Aug 27, 2026
  44. Hardik KumarAug 28, 2026
  45. Junio C HamanoAug 28, 2026
  46. Hardik KumarAug 28, 2026
  47. Hardik KumarAug 27, 2026

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.