contrib/python-hook-examples.py
author Sune Foldager <cryo@cyanite.org>
Tue, 26 Jun 2012 23:05:25 +0200
changeset 17043 6f89c3f0192d
parent 13878 a8d13ee0ce68
child 28562 2b585677220e
permissions -rw-r--r--
fix push of moved bookmark when creating new branch heads The problem occured when pushing a changeset that at the same time creates a new named branch head and moves a bookmark. The code invoked methods that only exist on localrepo instances, so it failed for any other type of remote. The test suite only tested against local remotes.

'''
Examples of useful python hooks for Mercurial.
'''
from mercurial import patch, util

def diffstat(ui, repo, **kwargs):
    '''Example usage:

    [hooks]
    commit.diffstat = python:/path/to/this/file.py:diffstat
    changegroup.diffstat = python:/path/to/this/file.py:diffstat
    '''
    if kwargs.get('parent2'):
        return
    node = kwargs['node']
    first = repo[node].p1().node()
    if 'url' in kwargs:
        last = repo['tip'].node()
    else:
        last = node
    diff = patch.diff(repo, first, last)
    ui.write(patch.diffstat(util.iterlines(diff)))