hooks: b35f1e6f37d5 (original) (raw)
Mercurial > hooks
changeset 67:b35f1e6f37d5
Use diffstat instead of ctx.files() to report summary of changed files. This should fix the inconsistent display of changed files in merge changesets.
Antoine Pitrou solipsis@pitrou.net | |
---|---|
date | Wed, 23 Mar 2011 16:29:20 +0100 |
parents | 9a63a9927d38 |
children | de405da1192a |
files | mail.py |
diffstat | 1 files changed, 9 insertions(+), 4 deletions(-)[+] [-] mail.py 13 |
line wrap: on
line diff
--- a/mail.py +++ b/mail.py @@ -9,6 +9,7 @@ from email.mime.text import MIMEText from mercurial import cmdutil, patch from mercurial.node import nullid from mercurial.encoding import fromlocal +from mercurial.util import iterlines import smtplib import os import sys @@ -52,15 +53,19 @@ def incoming(ui, repo, **kwargs): body += [CSET_URL % (path, ctx)] body += [line for line in log.splitlines()[:-2] if line != 'tag: tip']
- body += ['summary:\n ' + fromlocal(ctx.description()), '']
- body += ['files:\n ' + '\n '.join(ctx.files()), '']
- body += ['summary:\n ' + fromlocal(ctx.description())]
ctx.files() gives us misleading info on merges, we use a diffstat instead
- body += ['', 'files:']
diffopts = patch.diffopts(repo.ui, {'git': True, 'showfunc': True}) parents = ctx.parents() node1 = parents and parents[0].node() or nullid node2 = ctx.node()
- differ = patch.diff(repo, node1, node2, opts=diffopts)
- body.append(''.join(chunk for chunk in differ))
- diffchunks = list(patch.diff(repo, node1, node2, opts=diffopts))
- body.append(''.join(line for line in
patch.diffstat(iterlines(diffchunks), width=60, git=True)[](#l1.29)
))[](#l1.30)
- body.append(''.join(chunk for chunk in diffchunks))
body.append('-- ') body.append('Repository URL: %s%s' % (BASE, path))