annotate lib/hg/changelog/changelog.py @ 383:ff48d206d1f1

Miscellaneous tweaks.
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 05 Aug 2017 22:11:13 -0700
parents 792cbc7bae1d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
250
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
1 """changelog
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
2
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
3 Generates a user-centric changelog from commit messages
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
4 """
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
5 import re
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
6 import markdown
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
7 from mercurial import command, util, cmdutil, scmutil, graphmod
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
8 from mercurial.i18n import _
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
9
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
10 cmdtable = {}
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
11 command = cmdutil.command(cmdtable)
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
12
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
13 @command('changelog',
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
14 [
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
15 ('l', 'limit', '', _('limit number of changes included in the changelog'), _('NUM')),
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
16 ('r', 'rev', [], _('include the specified revision or range'), _('REV')),
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
17 ],
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
18 _('hg changelog [OPTION]... [FILE]'))
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
19 def changelog(ui, repo, *pats, **opts):
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
20 """generate a changelog from the revision history
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
21 """
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
22 rev = opts.get('rev')
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
23 if not rev:
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
24 rev = ['all()']
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
25 revs = sorted(scmutil.revrange(repo, rev), reverse=1)
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
26 limit = cmdutil.loglimit(opts)
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
27 if limit is not None:
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
28 revs = revs[:limit]
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
29
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
30 dateformat = ui.config('changelog', 'dateformat', '%B %d, %Y')
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
31
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
32 entries = [i for i in ui.configitems('changelog') if i[0].startswith('entry')]
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
33 ui.write(entries)
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
34 ui.write("\n")
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
35
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
36 ui.write("Generating changelog from:\n")
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
37 revdag = graphmod.dagwalker(repo, revs)
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
38 for rev, t, ctx, parents in revdag:
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
39 ui.write('%s: %s %s %s\n' % (util.datestr(ctx.date(), dateformat), rev, t, ctx.description()))
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
40
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
41 ui.write("\n")
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
42 ui.write("foo = %s\n" % ui.config('changelog', 'foo'))
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
43 ui.write("blah = %s\n" % ui.config('changelog', 'blah'))
792cbc7bae1d Add hg-changelog extension.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
44