contrib/python-hook-examples.py
author Matt Harbison <matt_harbison@yahoo.com>
Mon, 13 Jan 2025 00:40:48 -0500
changeset 52696 10e7adbffa8c
parent 48875 6000f5b25c9b
permissions -rw-r--r--
streamclone: unbyteify string args to builtin Error classes This avoids printing the error with a `b''` prefix in the case of `ValueError`. The custom `ProgrammingError` class is special in that it won't do that, and can take either bytes or str. But there's no point in passing bytes when it is just going to decode to str at runtime anyway.

'''
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.changelog.tip()
    else:
        last = node
    diff = patch.diff(repo, first, last)
    ui.write(patch.diffstat(util.iterlines(diff)))