]> git.ipfire.org Git - thirdparty/git.git/commitdiff
commit-graph: fix progress of reachable commits
authorSZEDER Gábor <szeder.dev@gmail.com>
Thu, 9 Jul 2020 16:54:32 +0000 (18:54 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 9 Jul 2020 17:27:23 +0000 (10:27 -0700)
To display a progress line while iterating over all refs,
d335ce8f24 (commit-graph.c: show progress of finding reachable
commits, 2020-05-13) should have added a pair of
start_delayed_progress() and stop_progress() calls around a
for_each_ref() invocation.  Alas, the stop_progress() call ended up at
the wrong place, after write_commit_graph(), which does all the
commit-graph computation and writing, and has several progress lines
of its own.  Consequently, that new

  Collecting referenced commits: 123

progress line is overwritten by the first progress line shown by
write_commit_graph(), and its final "done" line is shown last, after
everything is finished:

  Expanding reachable commits in commit graph: 344786, done.
  Computing commit changed paths Bloom filters: 100% (344786/344786), done.
  Collecting referenced commits: 154, done.

Move that stop_progress() call to the right place.

While at it, drop the unnecessary 'if (data.progress)' condition
protecting the stop_progress() call, because that function is prepared
to handle a NULL progress struct.

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
commit-graph.c

index 5df3e08718bdb9198345e73a0dd43c395bbf8c66..aaf3327ede88f9e0955bec5bcb7586329ed653f2 100644 (file)
@@ -1354,12 +1354,13 @@ int write_commit_graph_reachable(struct object_directory *odb,
                        _("Collecting referenced commits"), 0);
 
        for_each_ref(add_ref_to_set, &data);
+
+       stop_progress(&data.progress);
+
        result = write_commit_graph(odb, NULL, &commits,
                                    flags, split_opts);
 
        oidset_clear(&commits);
-       if (data.progress)
-               stop_progress(&data.progress);
        return result;
 }