Web lists-archives.com

Re: [PATCH 3/4] repack: add --sparse and pass to pack-objects

On 2019-03-12 13:47, Derrick Stolee wrote:
On 3/12/2019 9:18 AM, Nathaniel Filardo wrote:
The sparse connectivity algorithm saves a whole lot of time when there
are UNINTERESTING trees around.

Interesting! Do you have some performance numbers to include with
this statement?


Not directly, no, but the performance numbers reported for the next patch in the series hinge on using sparse reachability. It seemed like a good idea to
expose this knob through repack even if one isn't going to use the
--assume-pack-keep-transitive flag introduced in the next patch.

@@ -48,6 +49,10 @@ static int repack_config(const char *var, const char *value, void *cb)
 		use_delta_islands = git_config_bool(var, value);
 		return 0;
+	if (!strcmp(var, "pack.usesparse")) {
+		sparse = git_config_bool(var, value);
+		return 0;
+	}

This part is not handled inside of `pack-objects`. Since you are not
sending '--no-sparse' when the variable 'sparse' is zero, the config
setting will automatically be picked up by the pack-objects builtin.

OK, I will drop this hunk.

Now, a question of whether you _should_ allow the '--no-sparse' option
in the 'repack' command, and send it along to the inner command (when
it is present) is another question.

I'm inclined to say yes, but am open to suggestions. :)

@@ -366,6 +374,8 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
 	argv_array_push(&cmd.args, "--all");
 	argv_array_push(&cmd.args, "--reflog");
 	argv_array_push(&cmd.args, "--indexed-objects");
+	if (sparse)
+		argv_array_push(&cmd.args, "--sparse");
 	if (repository_format_partial_clone)
 		argv_array_push(&cmd.args, "--exclude-promisor-objects");
 	if (write_bitmaps)

How about a test with this new option? You can probably just add to

Can do.