commit-graph: writing missing parents is a BUG
authorDerrick Stolee <dstolee@microsoft.com>
Wed, 19 Dec 2018 20:14:07 +0000 (12:14 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 2 Jan 2019 23:00:26 +0000 (15:00 -0800)
commitcce99cd8c677446820a895e827967ca56cae9a93
tree69a6e67952aeb44d7675787e5433c2eb807b9e92
parent0d0ac3826a3bbb9247e39e12623bbcfdd722f24c
commit-graph: writing missing parents is a BUG

When writing a commit-graph, we write GRAPH_MISSING_PARENT if the
parent's object id does not appear in the list of commits to be
written into the commit-graph. This was done as the initial design
allowed commits to have missing parents, but the final version
requires the commit-graph to be closed under reachability. Thus,
this GRAPH_MISSING_PARENT value should never be written.

However, there are reasons why it could be written! These range
from a bug in the reachable-closure code to a memory error causing
the binary search into the list of object ids to fail. In either
case, we should fail fast and avoid writing the commit-graph file
with bad data.

Remove the GRAPH_MISSING_PARENT constant in favor of the constant
GRAPH_EDGE_LAST_MASK, which has the same value.

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
commit-graph.c