Summary:
The binary format allows us to checkin a large repo's dag and use it for
testing. The format is designed to be compat and easy for machine parsing.
`hg debugbindag` was added to generate such format from an existing repo,
and `hg debugpreviewbindag` was added to preview such binary format.
Size of serialized DAGs:
repo | method | size (KB) | size (KB), zstd -19
--------------------------------------------------------
mozilla | debugbindag | 101 | 66
| debugdag | 193 | 72
| changelog.i | 213925 | 80118
--------------------------------------------------------
fbsource | debugbindag | 1400 | 700
| debugdag | n/a * | n/a
--------------------------------------------------------
www | debugbindag | 5.6 | 3.2
| debugdag | n/a | n/a
Note:
`hg debugdag` and `hg debugbuilddag` exist, and they compress
relatively well. However, they have some (critical) issues:
- crashes on fbsource and www (*)
- complex syntax
- does not support selecting a subset of revs (ex. "::master")
Therefore I decided to invent something new.
Reviewed By: sfilipco
Differential Revision: D16294467
fbshipit-source-id: 754ab8942359ef73f5f53c427c7d38d94641fa75