view contrib/python-hook-examples.py @ 9378:1a7bcf58ba56

dirstate.write: don't ignore stat data if mtime is in the future (issue1790) This change narrows the race guard that was introduced by af3f26b6bba4 ("dirstate: ignore stat data for files that were updated too recently") to not discard the _map entry's stat data if the mtime is in the future. Without this change, status locks files having odd mtimes in the future into the 'unset' state, causing needless file compares later (admittedly harmless), but also inflicting highly irritating sticky effects on tools/plugins that directly read .hg/dirstate (e.g. TortoiseHg).
author Adrian Buehlmann <adrian@cadifra.com>
date Fri, 21 Aug 2009 14:17:23 +0200
parents 62f11ef0df5b
children a8d13ee0ce68
line wrap: on
line source

'''
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].parents()[0].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)))