tla commit supports a couple of little known options: --seal and --fix. These options are used to create version-0 and versionfix-n revisions.
Sealing and fixing
An Arch version can actually be in two states:
- open
usual state, for base-0 and patch-n revisions.
- sealed
for version-0 and versionfix-n revisions.
A version-0 revision is created using commit or tag with the --seal option. Once a version is sealed, you can only commit or tag on it if you specify the --fix option. That will create versionfix-n revisions.
Except for their naming and requiring extra options to commit and tag, sealed revisions are completely equivalent to open revisions. They only exist to provide information to the human user, and to prevent the user from mistakenly creating new revisions where they do not belong. Sealed revisions are a convenience feature.
The revision name prefixes are chosen so a simple version sort will give the correct ordering. Revisions can only be created in the following order:
base-0, with import or tag;
patch-n, with commit or tag;
version-0, with "commit --seal" or "tag --seal";
versionfix-n, with "commit --fix" or "tag --fix".
Examples
Release and bugfixes
The milestones of Frobnicator are archived in frobnicator--release--1.0, a symbolic version, that is a version where all revisions are created with tag.
Development milestones, aka prereleases, are archived as patch-n revisions.
The version-0 revision is created when Frobnicator-1.0 is actually released, and announcements are posted on the homepage, Freshmeat, etc.
Bugfixing 1.0.n releases are archived as versionfix-n revisions in this branch.
Cycling archives
When Cycling Archives you could seal each active development branch with a log message giving the name and location of the archive where the branch is continued.
