Junio C Hamano [off-list ref] writes:
Without such a mechanism to clearly say "here is what we initialize
"what" -> "where and how".
a rev_info", the first call to repo_init_revisions() looks like the
place that initializes a rev_info, and call to release_revisions()
on a rev_info that did not go through repo_init_revisions() looks
like a call to free() of a pointer that hasn't been assigned the
result from an allocation from the heap. That is where my "iffy
from the API cleanliness POV" comes from.