On Wed, Jan 16, 2019 at 02:29:41PM +0100, Ævar Arnfjörð Bjarmason wrote: > @@ -941,11 +957,25 @@ void write_commit_graph(const char *obj_dir, > hashwrite(f, chunk_write, 12); > } > > - write_graph_chunk_fanout(f, commits.list, commits.nr); > - write_graph_chunk_oids(f, GRAPH_OID_LEN, commits.list, commits.nr); > - write_graph_chunk_data(f, GRAPH_OID_LEN, commits.list, commits.nr); > + if (report_progress) { > + /* > + * Each of the write_graph_chunk_*() functions just > + * below loops over our N commits. This number must be > + * kept in sync with the number of passes we're doing. > + */ > + int graph_passes = 3; > + if (num_large_edges) > + graph_passes++; write_commit_graph() already has the 'num_chunks' variable, which holds exactly the right value. > + progress = start_delayed_progress( > + _("Writing out commit graph"), > + graph_passes * commits.nr); > + } > + write_graph_chunk_fanout(f, commits.list, commits.nr, progress, &progress_cnt); > + write_graph_chunk_oids(f, GRAPH_OID_LEN, commits.list, commits.nr, progress, &progress_cnt); > + write_graph_chunk_data(f, GRAPH_OID_LEN, commits.list, commits.nr, progress, &progress_cnt); > if (num_large_edges) > - write_graph_chunk_large_edges(f, commits.list, commits.nr); > + write_graph_chunk_large_edges(f, commits.list, commits.nr, progress, &progress_cnt); > + stop_progress(&progress); > > close_commit_graph(the_repository); > finalize_hashfile(f, NULL, CSUM_HASH_IN_STREAM | CSUM_FSYNC); > -- > 2.20.1.153.gd81d796ee0 >