view contrib/python-hook-examples.py @ 35391:0432e54f4dbe

run-tests: stop automatically adding a (glob) for bundle backup lines This is the first step to dropping the existing globs for '\' matches, now that it is handled automatically. Instead of just dropping it, this pattern is now used to convert to '/' paths, to reduce the amount of manual cleanup required when creating tests on Windows.
author Matt Harbison <matt_harbison@yahoo.com>
date Sun, 10 Dec 2017 19:21:48 -0500
parents 2b585677220e
children 1a184b727aff
line wrap: on
line source

'''
Examples of useful python hooks for Mercurial.
'''
from __future__ import absolute_import
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)))