Problem
In Mercurial, tagging is not unique. it is entirely possible for multiple changesets to have the same tag ID. This obviously doesn't mesh well with how we use tagging in distcvs. Not only do we use it for logical mapping of a change set to a package release, but we also use it to prevent the same package release from being made on multiple branches. Mercurial out of the box does not support this kind of usage of tags.
Possible Solutions
Here are some possible solutions that came up by talking with the nice folks at #mercurial on freenode
Add hook to check central repo tags
Mercurial has the concept of hooks, that is pluggable actions when doing specific hg events. Once such event is pretxnchangegroup, that is a pre event to accepting a push from a cloned repo. A hook could be put in place so that when a push to the central repo is made, it would check the push tag against existing tags ( hg tags
). If a matching tag was found, the push operation could be aborted.
Problems with this solution
Thinking...