Commit slab relies on uniqueness of commit->index to access data. As submodules are repositories on their own, alloc_commit_index() (which depends on repository->parsed_objects->commit_count) no longer returns unique values. This would break tests once we move `generation` and `graph_pos` into a commit slab, as commits of supermodule and submodule can have the same index but must have different graph positions. Let's introduce a counter variable, `parsed_commits_count` to keep track of parsed commits so far. Signed-off-by: Abhishek Kumar <abhishekkumar8222@xxxxxxxxx> --- CI Build for the failing tests: https://travis-ci.com/github/abhishekkumar2718/git/jobs/345413840 alloc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/alloc.c b/alloc.c index 1c64c4dd16..29f0e3aa80 100644 --- a/alloc.c +++ b/alloc.c @@ -101,7 +101,9 @@ void *alloc_object_node(struct repository *r) static unsigned int alloc_commit_index(struct repository *r) { - return r->parsed_objects->commit_count++; + static unsigned int parsed_commits_count = 0; + r->parsed_objects->commit_count++; + return parsed_commits_count++; } void init_commit_node(struct repository *r, struct commit *c) -- 2.27.0