mercurialhookmercurial-hook

Useful Mercurial Hooks


What are some useful Mercurial hooks that you have come across?

A few example hooks are located in the Mercurial book:

I personally don't find these very useful. I would like to see:

Please stick to hooks that have either bat and bash, or Python. That way they can be used by both *nix and Windows users.


Solution

  • My favorite hook for formal repositories is the one that refuses multiple heads. It's great when you've got a continuous integration system that needs a post-merge tip to build automatically.

    A few examples are here: MercurialWiki: TipsAndTricks - prevent a push that would create multiple heads

    I use this version from Netbeans:

    # This software may be used and distributed according to the terms
    # of the GNU General Public License, incorporated herein by reference.
    #
    # To forbid pushes which creates two or more headss
    #
    # [hooks]
    # pretxnchangegroup.forbid_2heads = python:forbid2_head.forbid_2heads
    
    from mercurial import ui
    from mercurial.i18n import gettext as _
    
    def forbid_2heads(ui, repo, hooktype, node, **kwargs):
        if len(repo.heads()) > 1:
            ui.warn(_('Trying to push more than one head, try run "hg merge" before it.\n'))
            return True