Junio C Hamano <gitster@xxxxxxxxx> writes: > As this topic is designing essentially a new and machine parseable > format, we could even unify all three formats into one. For example, > the format could be like this: > > <oid> NUL [<attr>=<value> NUL]... > > where (0) "rev-list" that gives only a sequence of "<oid>" for commit-ish, as well as "rev-list --boundary", would fall out as a natural consequence. Bog-standard "list of commits" would see a sequence of "<oid> NUL", while a boundary object would see "<oid> NUL boundary=yes NUL". > (1) A record ends when a new record begins. > > (2) The beginning of a new record is signaled by <oid> that is all > hexadecimal and does not have any '=' in it. > > (3) The traditional "rev-list --objects" output that gives path in > addition to the object name uses "path" as the <attr> name, > i.e. such a record looks like "<oid> NUL path=<path> NUL". > > (4) The traditional "rev-list --missing" output loses the leading > "?"; it is replaced by "missing" as the <attr> name, i.e. such > a record may look like "<oid> NUL missing=yes NUL..." together > with other "<token>=<value> NUL" pairs appended as needed at > the end.