Differences between revisions 1 and 2
Revision 1 as of 2009-01-04 20:42:10
Size: 1012
Comment:
Revision 2 as of 2009-01-04 21:18:19
Size: 1279
Comment:
Deletions are marked like this. Additions are marked like this.
Line 42: Line 42:
== 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

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:

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

ArbitraryMetadata (last edited 2009-05-19 19:31:01 by localhost)