Commits can be tagged with arbitrary user-controlled. These tags can then be used to filter logs, control push and pull operations, and augment other operations.
Tags are structured as a
key=value map, where each key must be unique.
For example, creating a commit with
build=nightly and later updating it
build=archive will overwrite the previous value. As a convenience,
the value can be omitted, in which case the empty string will be used. This
lets tags be used as labels, such as
titan commit -t nightly ....
Tags are displayed as part of titan log:
$ titan log postgres commit 428f81caf63d4314b8f41a31aad2e8b1 User: Eric Schrock Email: Eric.Schrock@delphix.com Date: 2019-10-23T20:23:57Z Tags: foo=bar baz Commit message
Filtering by Tag¶
A number of commands can be augmented by specifying one or more
to filter commits by tag. These commands include:
When tag options are specified, only matching commits (or the latest matching commit for pull, push, and checkout) are included. The commits must match all specified tags. If both a key and value are specified, then the tag must match both exactly. If only a key is specified, then any value will be considered a match, as simply the existence of the tag is sufficient. Like tag creation, this allows the value to be optional, treating the tags more like labels with no explicit value:
$ titan log -t baz -t foo=bar postgres commit 428f81caf63d4314b8f41a31aad2e8b1 User: Eric Schrock Email: Eric.Schrock@delphix.com Date: 2019-10-23T20:23:57Z Tags: foo=bar baz Commit message
All tags must match for a commit to be included. There is no way to specify that one or more tags match (logical OR).