This requires coordinated work on 3 parts:
Description
Revisions and Commits
Status | Assigned | Task | ||
---|---|---|---|---|
Migrated | gitlab-migration | T2421 Make model objects immutable | ||
Migrated | gitlab-migration | T2423 Extract the `extra_headers` away from `Revision.metadata` into a top-level immutable object |
Event Timeline
In the git "specification" (in the git code really), extra headers are a sequence of arbitrary (key: bytes, value: bytes) tuples, that are serialized in the commit object between the common headers and the commit message.
Keys are allowed to repeat (and they do, e.g. when several tags are merged together, there's several mergetag extra headers in the commit object). Headers are serialized in an arbitrary order, that needs to be preserved (in objects generated by git itself, encoding comes first and gpgsig comes last).
We have reused the extra headers mechanism in the SVN loader, to reference the original revision id and repository uuid in archived revisions (and have them affect the identifier of the revision, as we've considered that this information was an intrinsic part of the revision).