All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ayush Chandekar <ayu.chandekar@gmail.com>
To: ayu.chandekar@gmail.com
Cc: christian.couder@gmail.com, git@vger.kernel.org,
	shejialuo@gmail.com, shyamthakkar001@gmail.com, ps@pks.im,
	gitster@pobox.com, usmanakinyemi202@gmail.com
Subject: [GSOC PATCH v3 0/2] builtin/prune: remove dependency on global variables and 'the_repository'
Date: Fri,  4 Jul 2025 19:42:33 +0530	[thread overview]
Message-ID: <cover.1751630981.git.ayu.chandekar@gmail.com> (raw)
In-Reply-To: <cover.1751296633.git.ayu.chandekar@gmail.com>

The aim of this patch series is to remove the definition '#define USE_THE_REPOSITORY_VARIABLE' 
from "builtin/prune.c" by removing global variables and the global 'the_repository'.

This patch series contains two patches:

1 - Move the global variable 'repository_format_precious_objects' into 'struct repository' 
and update all affected code paths accordingly.

2 - Remove the dependency of 'the_repository' in "builtin/prunce.c", allowing the removal of 
the definition. Also, add a test to check if 'git prune -h' can be run when repository is 'NULL'.


Ayush Chandekar (2):
  repository: move 'repository_format_precious_objects' to repo scope
  builtin/prune: stop depending on 'the_repository'

 builtin/gc.c            |  2 +-
 builtin/prune.c         | 27 ++++++++++++---------------
 builtin/repack.c        |  2 +-
 environment.c           |  1 -
 environment.h           |  2 --
 repository.c            |  1 +
 repository.h            |  1 +
 setup.c                 |  5 ++++-
 t/t1517-outside-repo.sh |  7 +++++++
 9 files changed, 27 insertions(+), 21 deletions(-)

-- 

Summary of range-diff:
* Format the commit message of 1/2 correctly.
* Move the call to `repo_init_revisions()` after `parse_options()` in 2/2. 
* Add a test to check if 'git prune -h' can be run outside repository in 2/2.

Range-diff with v2:
1:  a58577a147 ! 1:  a828ade541 repository: move 'repository_format_precious_objects' to repo scope
    @@ Commit message
         repository: move 'repository_format_precious_objects' to repo scope
     
         The 'extensions.preciousObjects' setting when set true, prevents
    -    operations that might drop objects from the object storage.
    -    This setting is populated in the global variable
    +    operations that might drop objects from the object storage. This setting
    +    is populated in the global variable
         'repository_format_precious_objects'.
    -    Move this global variable to repo scope by adding it to struct
    -    `repository` and also refactor all the occurences accordingly.
    +
    +    Move this global variable to repo scope by adding it to 'struct
    +    repository and also refactor all the occurences accordingly.
     
         This change is part of an ongoing effort to eliminate global variables,
         improve modularity and help libify the codebase.
2:  c5eaebc2cc ! 2:  22fbbc8cf1 builtin/prune: stop depending on 'the_repository'
    @@ Commit message
         Refactor builtin/prune.c to remove the dependency on the global
         'the_repository'. Replace all the occurrences of 'the_repository' with
         repo and thus remove the definition '#define
    -    USE_THE_REPOSITORY_VARIABLE'
    +    USE_THE_REPOSITORY_VARIABLE'. Also, add a test to make sure that 'git
    +    prune -h' can be called when the repository is `NULL`.
     
         Mentored-by: Christian Couder <christian.couder@gmail.com>
         Mentored-by: Ghanshyam Thakkar <shyamthakkar001@gmail.com>
    @@ builtin/prune.c: int cmd_prune(int argc,
      	save_commit_buffer = 0;
      	disable_replace_refs();
     -	repo_init_revisions(the_repository, &revs, prefix);
    -+	repo_init_revisions(repo, &revs, prefix);
      
      	argc = parse_options(argc, argv, prefix, options, prune_usage, 0);
      
     -	if (the_repository->repository_format_precious_objects)
    ++	repo_init_revisions(repo, &revs, prefix);
     +	if (repo->repository_format_precious_objects)
      		die(_("cannot prune in a precious-objects repo"));
      
    @@ builtin/prune.c: int cmd_prune(int argc,
      		perform_reachability_traversal(&revs);
      		prune_shallow(show_only ? PRUNE_SHOW_ONLY : 0);
      	}
    +
    + ## t/t1517-outside-repo.sh ##
    +@@ t/t1517-outside-repo.sh: test_expect_success 'update-server-info does not crash with -h' '
    + 	test_grep "[Uu]sage: git update-server-info " usage
    + '
    + 
    ++test_expect_success 'prune does not crash with -h' '
    ++	test_expect_code 129 git prune -h >usage &&
    ++	test_grep "[Uu]sage: git prune " usage &&
    ++	test_expect_code 129 nongit git prune -h >usage &&
    ++	test_grep "[Uu]sage: git prune " usage
    ++'
    ++
    + test_done

2.49.0


  parent reply	other threads:[~2025-07-04 14:14 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-08  1:06 [GSOC PATCH 0/2] builtin/prune: remove dependency on global variables and 'the_repository' Ayush Chandekar
2025-06-08  1:06 ` [GSOC PATCH 1/2] repository: move 'repository_format_precious_objects' to repo scope Ayush Chandekar
2025-06-28  7:26   ` shejialuo
2025-06-28 13:14     ` Ayush Chandekar
2025-06-08  1:06 ` [GSOC PATCH 2/2] builtin/prune: stop depending on 'the_repository' Ayush Chandekar
2025-06-28  7:33   ` shejialuo
2025-06-28 13:21     ` Ayush Chandekar
2025-06-25 15:59 ` [GSOC PATCH 0/2] builtin/prune: remove dependency on global variables and 'the_repository' Ayush Chandekar
2025-06-30 16:41 ` [GSOC PATCH v2 " Ayush Chandekar
2025-06-30 16:41   ` [GSOC PATCH v2 1/2] repository: move 'repository_format_precious_objects' to repo scope Ayush Chandekar
2025-07-01 13:01     ` Patrick Steinhardt
2025-07-01 18:24       ` Ayush Chandekar
2025-07-02  2:23         ` Patrick Steinhardt
2025-06-30 16:41   ` [GSOC PATCH v2 2/2] builtin/prune: stop depending on 'the_repository' Ayush Chandekar
2025-07-01 13:01     ` Patrick Steinhardt
2025-07-01 16:42       ` Junio C Hamano
2025-07-01 18:09         ` Ayush Chandekar
2025-07-01 19:44           ` Usman Akinyemi
2025-07-01 22:04             ` Ayush Chandekar
2025-07-02  2:23           ` Patrick Steinhardt
2025-07-02 11:18             ` Usman Akinyemi
2025-07-02 16:53               ` Ben Knoble
2025-07-02 17:06               ` Junio C Hamano
2025-07-02 23:51               ` Ayush Chandekar
2025-07-04 14:12   ` Ayush Chandekar [this message]
2025-07-04 14:12     ` [GSOC PATCH v3 1/2] repository: move 'repository_format_precious_objects' to repo scope Ayush Chandekar
2025-07-04 14:12     ` [GSOC PATCH v3 2/2] builtin/prune: stop depending on 'the_repository' Ayush Chandekar
2025-07-07  6:08       ` Patrick Steinhardt
2025-07-08 13:52         ` Ayush Chandekar

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=cover.1751630981.git.ayu.chandekar@gmail.com \
    --to=ayu.chandekar@gmail.com \
    --cc=christian.couder@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=ps@pks.im \
    --cc=shejialuo@gmail.com \
    --cc=shyamthakkar001@gmail.com \
    --cc=usmanakinyemi202@gmail.com \
    /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.