We've built a changeset propagation mechanism, but it relies on bundling and unbundling the new changesets. If we were to use the changegroup hook, then it would cause cyclic behaviors, because the hook is run during a pull, push, or unbundle. What we need is for the sync to be done after a commit, which the commit hook works perfectly for, but also after a push.
Note, the post-push hook is not the answer, as it is run when you push from that repository to another. This scenario calls, basically, for a special behavior of changegroup, only running when the new changesets are a result of a push.
Is there any hook that works that way?
Check the source argument to the hook. It will be
bundlewhen you're unbundling a changegroup,servewhen the changeset comes in over HTTP(S) or SSH, andpushwhen it comes in via a push done to a repository on the local file system.You find this argument as the
HG_SOURCEenvironment variable for a hook run as an external process, and as thesourcekeyword argument for an in-process hook.