To revisit a concern of mine from late January...

My team may switch to mercurial and we'd like our central hg repository to
validate a few things on each changeset.  We'd like the server to verify the
format of the commit message (first line is the CR number, space, CR synopsis,
second line is blank,...), and we'd also like to parse the CR number from the
commit message and verify that CR number against the approved CRs for that
repo, and verify that an extra head isn't created,...and more stuff, I'm sure.

The current list of mercurial hooks does not quite allow the scenario I had
envisioned.  I thought we'd have one main repo, "P", from which every team
member would push and pull.  The prechangegroup hook on P sounds good at first
glance, but it would have to reach back to the user's repo and rummage round
there--nix that idea.  The pretxnchangegroup hook on P appears to be the only
way to achieve the server-side enforcement.  The downside of this hook is that
it doesn't fire until the csets have already been applied, and another user
can pull those changes before the enforcement mechanism can decide to
abort&rollback this changegroup.

An alternative is to use cascading repos; one for pulls, "P", and one for
pushes, "Q".  Use pretxnchangegroup on P, and have P execute a changegroup
hook to push to Q.  A prechangegroup hook on Q would ensure that only P can
push to it.  (This is how teamware is used with on/nv, correct?)

Dean

Reply via email to