Changelog generator script for contrib

Vincent Wagelaar vincent at ricardis.tudelft.nl
Wed Aug 10 10:21:57 CDT 2005


On Wednesday 10 August 2005 16:08, Thomas Arendsen Hein wrote:
> * Vincent Wagelaar <vincent at ricardis.tudelft.nl> [20050810 15:04]:
> > I created a changelog generator script.  It can be downloaded from:
> >
> > http://hannibal.lr-s.tudelft.nl/~vincent/mercurial/hg-changelog
>
> Based on your code I hacked together a 'hg changelog' command.
> Here is the patch. Formatting is not perfect, as this is only a demo
> of how it could look like.
>
> Thomas

Added wordwrapping support to my script:

Now also a repo running at:
 http://hannibal.lr-s.tudelft.nl/~vincent/mercurial/hg/

>
> diff -r 2d2fee33ec68 mercurial/commands.py
> --- a/mercurial/commands.py	Wed Aug 10 07:41:23 2005
> +++ b/mercurial/commands.py	Wed Aug 10 16:07:22 2005
> @@ -469,6 +469,30 @@
>      fp = make_file(repo, r, opts['output'], node=n)
>      fp.write(r.read(n))
>
> +def changelog(ui, repo, *changesets):
> +    """generate changelog for one or more changesets"""
> +    if changesets:
> +        revs = list(revrange(ui, repo, changesets))
> +    else:
> +        revs = map(str, range(repo.changelog.count() - 1, -1, -1))
> +    last_date_author = None
> +    for cset in revs:
> +        node = repo.lookup(cset)
> +        changes = repo.changelog.read(node)
> +        author = changes[1]
> +        date = time.strftime("%Y-%m-%d",
> +                             time.localtime(float(changes[2].split('
> ')[0]))) +        date_author = "%s  %s\n\n" % (date, author)
> +        if last_date_author is None or last_date_author != date_author:
> +            if last_date_author:
> +                ui.write("\n")
> +            ui.write(date_author)
> +        description = changes[4].strip()
> +        if not ui.verbose:
> +            description = description.splitlines()[0]
> +        ui.write("\t* %s: %s\n" % (", ".join(changes[3]), description))
> +        last_date_author = date_author
> +
>  def clone(ui, source, dest=None, **opts):
>      """make a copy of an existing repository"""
>      if dest is None:
> @@ -1206,6 +1230,7 @@
>          (cat,
>           [('o', 'output', "", 'output to file')],
>           'hg cat [-o OUTFILE] FILE [REV]'),
> +    "changelog": (changelog, [], "hg changelog [REV]..."),
>      "^clone":
>          (clone,
>           [('U', 'noupdate', None, 'skip update after cloning')],


More information about the Mercurial mailing list