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

[RFC PATCH 2/4] builtin/repack.c: pass "cruft_expiration" to `write_cruft_pack`

From
Taylor Blau <me@ttaylorr.com>
Date
Jun 29, 2022, 18:47 UTC
Message-ID
<d346b65a43ba4f4c0c76f9483243e5277b411b11.1656528415.git.me@ttaylorr.com>
In-Reply-To
<cover.1656528343.git.me@ttaylorr.com>

`builtin/repack.c`'s `write_cruft_pack()` is used to generate the cruft pack when `--cruft` is supplied. It uses a static variable "cruft_expiration" which is filled in by option parsing.

A future patch will add an `--expire-to` option which allows `git repack` to write a cruft pack containing the pruned objects out to a separate repository. In order to implement this functionality, some callers will have to pass a value for `cruft_expiration` different than the one filled out by option parsing.

Prepare for this by teaching `write_cruft_pack` to take a "cruft_expiration" parameter, instead of reading a single static variable.

The (sole) existing caller of `write_cruft_pack()` will pass the value for "cruft_expiration" filled in by option parsing, retaining existing behavior. This means that we can make the variable local to `cmd_repack()`, and eliminate the static declaration.

Signed-off-by: Taylor Blau <me@ttaylorr.com>
---
 builtin/repack.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/builtin/repack.c b/builtin/repack.c
index 025882a075..19e789d745 100644
--- a/builtin/repack.c
+++ b/builtin/repack.c
@@ -32,7 +32,6 @@ static int write_bitmaps = -1;
 static int use_delta_islands;
 static int run_update_server_info = 1;
 static char *packdir, *packtmp_name, *packtmp;
-static char *cruft_expiration;
 
 static const char *const git_repack_usage[] = {
 	N_("git repack [<options>]"),
@@ -664,6 +663,7 @@ static int write_midx_included_packs(struct string_list *include,
 
 static int write_cruft_pack(const struct pack_objects_args *args,
 			    const char *pack_prefix,
+			    const char *cruft_expiration,
 			    struct string_list *names,
 			    struct string_list *existing_packs,
 			    struct string_list *existing_kept_packs)
@@ -747,6 +747,7 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
 	struct pack_objects_args cruft_po_args = {NULL};
 	int geometric_factor = 0;
 	int write_midx = 0;
+	const char *cruft_expiration = NULL;
 
 	struct option builtin_repack_options[] = {
 		OPT_BIT('a', NULL, &pack_everything,
@@ -986,7 +987,8 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
 		cruft_po_args.local = po_args.local;
 		cruft_po_args.quiet = po_args.quiet;
 
-		ret = write_cruft_pack(&cruft_po_args, pack_prefix, &names,
+		ret = write_cruft_pack(&cruft_po_args, pack_prefix,
+				       cruft_expiration, &names,
 				       &existing_nonkept_packs,
 				       &existing_kept_packs);
 		if (ret)
-- 
2.37.0.1.g1379af2e9d
Previous: Taylor BlauNext: Taylor Blau
Message 3 of 9 in “move pruned objects to a separate repository”
  1. 0/4 move pruned objects to a separate repositoryTaylor Blau, Jun 29, 2022
  2. 1/4 builtin/repack.c: pass "out" to `prepare_pack_objects`Taylor Blau, Jun 29, 2022
  3. 2/4 builtin/repack.c: pass "cruft_expiration" to `write_cruft_pack`Taylor Blau, Jun 29, 2022
  4. 3/4 builtin/repack.c: write cruft packs to arbitrary locationsTaylor Blau, Jun 29, 2022
  5. 4/4 builtin/repack.c: implement `--expire-to` for storing pruned objectsTaylor Blau, Jun 29, 2022
  6. Jonathan TanJun 29, 2022
  7. Taylor BlauJun 30, 2022
  8. Jonathan TanJun 30, 2022
  9. Ævar Arnfjörð BjarmasonJun 30, 2022

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.