On Tue, 30 Jan 2018 16:39:30 -0500 Derrick Stolee <stolee@xxxxxxxxx> wrote: > + Commit Data (ID: {'C', 'G', 'E', 'T' }) (N * (H + 16) bytes) > + * The first H bytes are for the OID of the root tree. > + * The next 8 bytes are for the int-ids of the first two parents > + of the ith commit. Stores value 0xffffffff if no parent in that > + position. If there are more than two parents, the second value > + has its most-significant bit on and the other bits store an array > + position into the Large Edge List chunk. [snip] > + Large Edge List (ID: {'E', 'D', 'G', 'E'}) > + This list of 4-byte values store the second through nth parents for > + all octopus merges. The second parent value in the commit data is a > + negative number pointing into this list. Looking at the paragraph which I quoted before the [snip], this sentence is confusing (in particular, the second parent value is not interpreted as the normal two's-complement negative value, and the semantics of negative values indexing into the list is unclear). Maybe it's better to omit it entirely.