ArbitraryMetadata is an idea taken from [[http://monotone.ca|Monotone]] It allows to attach signed key-value pairs to a revision/file after a commit and a key may be used more than once. In monotone this is not only used for the usual commit metadata like time, author, commit-messages, but also for tracking extra information like core developer approvals or testresults. The common use-case is "trust" based update to * revisions with approval of n core devs * revisions that passed the testsuite on a set of buildbots == The way Monotone handles it == The metadata is stored using 2 Ideas. Examples: {{{#!rst Statement links a key-value pair to a revision :revision: 73268e317ad3 :name: push-date :value: 2003-03-03 22:00:31 UTC Certificate signs a Statement :revision: 73268e317ad3 :name: push-date :value: 2003-03-03 22:00:31 UTC :signed-by: john@doe.com :signature: 1234 }}} == Basic Properties of the Metadata == * immutable - we don't want to change the things we added * unversioned - we can't change it, so we wont need to version it * keys are not unique - more than one person might add the same thing, it just has to work == How could mercurial do it == XXX: todo See also PushkeyConcept.