On Tue, Sep 27 2022, Phillip Wood wrote: > On 23/09/2022 19:55, Stefan Xenos via GitGitGadget wrote: >> From: Stefan Xenos <sxenos@xxxxxxxxxx> >> A change table stores a list of changes, and supports efficient >> lookup >> from a commit hash to the list of changes that reference that commit >> directly. >> It can be used to look up content commits or metacommits at the head >> of a change, but does not support lookup of commits referenced as part >> of the commit history. >> Signed-off-by: Stefan Xenos <sxenos@xxxxxxxxxx> >> Signed-off-by: Chris Poucet <poucet@xxxxxxxxxx> > >> diff --git a/change-table.h b/change-table.h >> new file mode 100644 >> index 00000000000..166b5ed8073 >> --- /dev/null >> +++ b/change-table.h >> @@ -0,0 +1,132 @@ >> +#ifndef CHANGE_TABLE_H >> +#define CHANGE_TABLE_H >> + >> +#include "oidmap.h" >> + >> +struct commit; >> +struct ref_filter; >> + >> +/** > > We tend to just use '/*' rather than '/**' No, we use both, and /** is correct here. It's an API-doc syntax, see e.g. strbuf.h. It's explicitly meant for this sort of thing, i.e. comments on public structs in a header & the functions in a header (and struct members, etc.). >> + * This struct holds a list of change refs. The first element is > stored inline, >> + * to optimize for small lists. >> + */ >> +struct change_list { >> + /** >> + * Ref name for the first change in the list, or null if none. >> + * >> + * This field is private. Use for_each_change_in to read. >> + */ >> + const char* first_refname; >> + /** While we're on nits we tend to add an extra \n before the next API comment...