In my previous developer life, clearcase was the tool, during 10+ years, for version control. Now the organisation I work for have moved over to git since 4 years. In clearcase there are easy accessible metadata constructions such as attributes on all levels of items such as repositories OR branches OR labels. git notes exists, but after some web surfing I have not come across any clear good way of doing this efficiently and why. For example UCM ClearCase baseline promotion level is a good concept that I wish would be as simple in git.
The development community stats I represent for this particular problem: < 100 developers, < 5 major release branches, < 100 customer patch branches, code base size: < 1000000 lines of code.
Hence the need for some appropriate metadata strategy and tooling.
In clearcase the following metadata constructs exist:
- labels (common usage: pointing out all file revisions included in a external SW delivery)
attributes, can be applied to labels or branches:
- label attribute, can have any values, common usage: telling the status of a label: TEST_RESULT:OK|NOK or CUSTOMER_AVAILABILITY:GENERAL|LIMITED|INTERNAL_ONLY
- branch attribute, common usage: BRANCH_STATUS:ACTIVE|OBSOLETE
UCM baselines which is a form of label with a status attribute (see for example: https://www-304.ibm.com/support/docview.wss?uid=swg21135893)
- hyperlinks (used to point merge directions for instance)
In particular:
- the label + attribute construction which can be used for TEST_RESULT
- branch + attribute that can bring clarity on BRANCH_STATUS