view contrib/python-hook-examples.py @ 47832:7835f2696de8 stable

test-extension: adapt output to pyoxidizer The traceback use module name instead of filename. The rest of the test is still on fire for various other reasons. However that specific output mismatch is now fixed. Differential Revision: https://phab.mercurial-scm.org/D11285
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Tue, 17 Aug 2021 21:57:59 +0200
parents 89a2afe31e82
children 6000f5b25c9b
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.changelog.tip()
    else:
        last = node
    diff = patch.diff(repo, first, last)
    ui.write(patch.diffstat(util.iterlines(diff)))