Implementation Details about Changesets Evolution
This page is intended for developer
For a user perspective have a look at the ChangesetEvolution page.
1. Obsstore Format
Markers are stored in an append-only file stored in '.hg/store/obsstore'.
2. V1 (current) Format
(see in line document for latest data)
The file starts with a version header:
- - 1 unsigned byte: version number, starting at zero.
The header is followed by the markers. Each marker is made of:
- - 1 unsigned byte: number of new changesets "N", can be zero. - 1 unsigned 32-bits integer: metadata size "M" in bytes. - 1 byte: a bit field. It is reserved for flags used in common
- obsolete marker operations, to avoid repeated decoding of metadata entries.
- string contains a key and a value, separated by a colon ':', without additional encoding. Keys cannot contain '\0' or ':' and values cannot contain '\0'.