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

Re: commit-graph idea: warn when disabled for incompatible repositories

From
Derrick Stolee <stolee@gmail.com>
Date
Dec 18, 2018, 19:07 UTC
Message-ID
<98e86f95-78d7-a64b-86d9-c33cecfcb28c@gmail.com>
In-Reply-To
<87bm5ig0h3.fsf@evledraar.gmail.com>
On 12/18/2018 1:21 PM, Ævar Arnfjörð Bjarmason wrote:
Show 18 quoted lines
> diff --git a/builtin/gc.c b/builtin/gc.c
> index 871a56f1c5..702568b70d 100644
> --- a/builtin/gc.c
> +++ b/builtin/gc.c
> @@ -662,9 +662,14 @@ int cmd_gc(int argc, const char **argv, const char *prefix)
>   	if (pack_garbage.nr > 0)
>   		clean_pack_garbage();
>
> -	if (gc_write_commit_graph)
> +	if (gc_write_commit_graph) {
> +		int verbose = !quiet && !daemonized;
> +		if (verbose && !commit_graph_compatible(the_repository))
> +			warning(_("The `gc.writeCommitGraph' setting is on, "
> +				  "but commit_graph_compatible() = false"));
>   		write_commit_graph_reachable(get_object_directory(), 0,
> -					     !quiet && !daemonized);
> +					     verbose);
> +	}

I actually think this is the wrong place to put it. This will cause a warning for someone with 'gc.writeCommitGraph' enabled and running GC on a shallow clone.

I think the issue was someone running 'git commit-graph write' inside a shallow clone that succeeds without doing anything.

Also, I bet you would hit this block if you run the test suite with GIT_TEST_COMMIT_GRAPH=1.

Thanks,
-Stolee
Show 28 quoted lines
>   	if (auto_gc && too_many_loose_objects())
>   		warning(_("There are too many unreachable loose objects; "
> diff --git a/commit-graph.c b/commit-graph.c
> index 40c855f185..60915bf9aa 100644
> --- a/commit-graph.c
> +++ b/commit-graph.c
> @@ -61,7 +61,7 @@ static struct commit_graph *alloc_commit_graph(void)
>
>   extern int read_replace_refs;
>
> -static int commit_graph_compatible(struct repository *r)
> +int commit_graph_compatible(struct repository *r)
>   {
>   	if (!r->gitdir)
>   		return 0;
> diff --git a/commit-graph.h b/commit-graph.h
> index 9db40b4d3a..7c92d41a28 100644
> --- a/commit-graph.h
> +++ b/commit-graph.h
> @@ -12,6 +12,8 @@ struct commit;
>
>   char *get_commit_graph_filename(const char *obj_dir);
>
> +int commit_graph_compatible(struct repository *r);
> +
>   /*
>    * Given a commit struct, try to fill the commit struct info, including:
>    *  1. tree object

This part looks correct, and necessary for the warning in builtin/commit-graph.c

Thanks,
-Stolee
Previous: Ævar Arnfjörð Bjarmason
Message 4 of 4 in “commit-graph idea: warn when disabled for incompatible repositories”
  1. Thomas Ferris NicolaisenDec 18, 2018
  2. Derrick StoleeDec 18, 2018
  3. Ævar Arnfjörð BjarmasonDec 18, 2018
  4. Derrick StoleeDec 18, 2018

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.