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
> 

Reply via email to