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 <redacted>
---
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