]> git.ipfire.org Git - thirdparty/git.git/commitdiff
commit-graph: when incompatible with graphs, indicate why
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Thu, 11 Feb 2021 15:39:13 +0000 (15:39 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 11 Feb 2021 17:33:01 +0000 (09:33 -0800)
When `gc.writeCommitGraph = true`, it is possible that the commit-graph
is _still_ not written: replace objects, grafts and shallow repositories
are incompatible with the commit-graph feature.

Under such circumstances, we need to indicate to the user why the
commit-graph was not written instead of staying silent about it.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Acked-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
commit-graph.c

index 031641014faacfbefb288b88a670c6716566aa2a..8fd480434353806f0b8b96b84eab705e9e91355d 100644 (file)
@@ -205,16 +205,24 @@ static int commit_graph_compatible(struct repository *r)
 
        if (read_replace_refs) {
                prepare_replace_object(r);
-               if (hashmap_get_size(&r->objects->replace_map->map))
+               if (hashmap_get_size(&r->objects->replace_map->map)) {
+                       warning(_("repository contains replace objects; "
+                              "skipping commit-graph"));
                        return 0;
+               }
        }
 
        prepare_commit_graft(r);
        if (r->parsed_objects &&
-           (r->parsed_objects->grafts_nr || r->parsed_objects->substituted_parent))
+           (r->parsed_objects->grafts_nr || r->parsed_objects->substituted_parent)) {
+               warning(_("repository contains (deprecated) grafts; "
+                      "skipping commit-graph"));
                return 0;
-       if (is_repository_shallow(r))
+       }
+       if (is_repository_shallow(r)) {
+               warning(_("repository is shallow; skipping commit-graph"));
                return 0;
+       }
 
        return 1;
 }