Size: 1120
Comment: adding V1 format information
|
Size: 1120
Comment: fix lists
|
Deletions are marked like this. | Additions are marked like this. |
Line 19: | Line 19: |
- 1 unsigned byte: version number, starting at zero. | * 1 unsigned byte: version number, starting at zero. |
Line 24: | Line 24: |
- 1 unsigned byte: number of new changesets "N", can be zero. | * 1 unsigned byte: number of new changesets "N", can be zero. |
Line 26: | Line 26: |
- 1 unsigned 32-bits integer: metadata size "M" in bytes. | * 1 unsigned 32-bits integer: metadata size "M" in bytes. |
Line 28: | Line 28: |
- 1 byte: a bit field. It is reserved for flags used in common | * 1 byte: a bit field. It is reserved for flags used in common |
Line 32: | Line 32: |
- 20 bytes: obsoleted changeset identifier. | * 20 bytes: obsoleted changeset identifier. |
Line 34: | Line 34: |
- N*20 bytes: new changesets identifiers. | * N*20 bytes: new changesets identifiers. |
Line 36: | Line 36: |
- M bytes: metadata as a sequence of nul-terminated strings. Each | * M bytes: metadata as a sequence of nul-terminated strings. Each |
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.
- 20 bytes: obsoleted changeset identifier.
- N*20 bytes: new changesets identifiers.
- M bytes: metadata as a sequence of nul-terminated strings. Each
- string contains a key and a value, separated by a colon ':', without additional encoding. Keys cannot contain '\0' or ':' and values cannot contain '\0'.