Update: I have changed the name of this extension from ExcludeChangests to BanChangesets. (9-Oct-2011)
Just a quick note to say I uploaded my first published Mercurial extension!
BanChangesets can be used to ensure that certain changesets which are determined to be “bad” by a team can be banned from being repushed to a central repository.
Imagine that you have a team of people working on a mercurial repository. One of the members of the team pushes a changeset or group of changesets to the central repository but these changesets are “bad” for one reason or another. (Maybe some branch was merged when it should not have been, etc. Maybe some nuclear launch codes were accidentally committed, etc.). Ideally this should never happen. In practice it happens all too frequently.
So typically the leader of the project will send out an email saying something like: Please strip the following revisions from your repositories:
162a93e027fdcc6f037c80d185eb201e346da0b0 69cc2b0e47158d1a571a35ec89c5524b084944c9 a4988662d998b8d986bdaec43079475827aa31d0
The problem is of course that in a team of say 20 people someone might have already pulled the “bad” revisions and they may accidentally miss the email, and re-push these bad revisions back to the central server.
The extension ban-changesets is intended to prevent such a re-push of these “bad” changesets.