Q:

Automatically Tag changesets when commit or pushed to kiln

I would like to know if there is a way to automatically tag a changeset as it is committed locally or when pushed to the kiln repository.
I would like every changeset to have a tag with version/build number. I am planning to store my version/build numbers in a database and would like to have a script retrieve this value from the database and add a tag to the changeset. Is it possible to invoke a script automatically to do this as a post-commit event or as a post-push event when pushed to the kiln repository?
I am also open to any other approaches to achieve automatic tagging on every commit/push.

A:

Rather than creating a tag for each changeset, why not try one of the following:

Use the changeset hash as your identifier?
Use a string generated from the log as your identifier (see below)?

A descriptive string can be generated from the log using this command:
hg log -r 1.7.2 --template '{latesttag}-{latesttagdistance}-{node}\n'

The result takes the form:
<latest tag>-<# changesets since latest tag>-<changeset hash>

For example, on my local clone of the Mercurial repo, this generates:
1.7.2-2-5e51254ad4d4c80669f462e310b2677f2b3c54a7

Which tells me that there have been two commits since tag 1.7.2 and the current changeset hash is 5e51254a.
In Mercurial, each tag creates a new changeset.  So if you tag every commit, you double the number of changesets in the repo.  You should use the built-in tools (as described above) rather than try to recreate the wheel.

