Re: [PATCH 3/5] commit-graph: validate layers for generation data
- From
Taylor Blau <me@ttaylorr.com>
- Date
- Feb 1, 2021, 17:39 UTC
- Message-ID
- <YBg858G1eFy1if6o@nand.local>
- In-Reply-To
- <d554fa306601c9e5e0e804d10b7a73b6eece6b04.1612199707.git.gitgitgadget@gmail.com>
On Mon, Feb 01, 2021 at 05:15:05PM +0000, Derrick Stolee via GitGitGadget wrote:
Show 14 quoted lines
> diff --git a/commit-graph.c b/commit-graph.c > index edbb3a0f2cc..13992137dd0 100644 > --- a/commit-graph.c > +++ b/commit-graph.c > @@ -614,19 +614,26 @@ static struct commit_graph *load_commit_graph_chain(struct repository *r, > return graph_chain; > } > > -static void validate_mixed_generation_chain(struct commit_graph *g) > +/* > + * returns 1 if and only if all graphs in the chain have > + * corrected commit dates stored in the generation_data chunk. > + */ > +static int validate_mixed_generation_chain(struct commit_graph *g)
Thanks for the comment. It does make me wonder if the function name needs updating, though. I'm having some trouble coming up with a better alternative, though, so maybe it's fine...
> {
> - int read_generation_data;
> + int read_generation_data = 1;OK, we might not ever enter the while loops below, so this needs initializing.
Show 10 quoted lines
> + struct commit_graph *p = g;
>
> - if (!g)
> - return;
> -
> - read_generation_data = !!g->chunk_generation_data;
> + while (read_generation_data && p) {
> + read_generation_data = p->read_generation_data;
> + p = p->base_graph;
> + }This could probably be guarded with an 'if !read_generation_data', since if the previous while loop always read '1' from 'p->read_generation_data', then nothing needs updating, no?
(If you do make this change, please don't add '!read_generation_data' to the while expression, since it isn't a property of the loop.)
Show 12 quoted lines
> while (g) {
> g->read_generation_data = read_generation_data;
> g = g->base_graph;
> }
> +
> + return read_generation_data;
> }
>
> struct commit_graph *read_commit_graph_one(struct repository *r,
> --
> gitgitgadget
>Thanks, Taylor