Subject: Re: [StGit PATCH] teach --summary to stg show

From: Alex Chiang <[email-masked]>
Date: Fri, 10 Jul 2009 12:56:29 -0600

* Catalin Marinas <[email-masked]>:
> Hi Alex,
> 
> Sorry for the loooong delay.

No problem.

> 2009/6/19 Alex Chiang <[email-masked]>:
> > Add -s/--summary option to stg show, which will generate a nice
> > diffstat, similar to what you get in a cover mail if you specify
> > %(diffstat)s.
> 
> I would use --stat for consistency with the diff command.
> 
> > +        commit_str = gitlib.diffstat(git.diff(
> > +                                rev1 = git_id(crt_series, '%s^' % patches[0]),
> > +                                rev2 = git_id(crt_series, '%s' % patches[-1])))
> 
> This works only of the shown patches are consecutive. If you specify
> random patches, the diffstat isn't correct. I propose this form of the
> patch:

Looks much nicer than mine, thanks.

Tested-by: Alex Chiang <[email-masked]>

[how about that other patch "fix stg mail %(shortlog)s order"? :) ]

/ac

> diff --git a/stgit/commands/show.py b/stgit/commands/show.py
> index b7a8aa9..45c3a56 100644
> --- a/stgit/commands/show.py
> +++ b/stgit/commands/show.py
> @@ -20,6 +20,7 @@ from pydoc import pager
>  from stgit.argparse import opt
>  from stgit.commands.common import *
>  from stgit import argparse, git
> +from stgit.lib import git as gitlib
> 
>  help = 'Show the commit corresponding to a patch'
>  kind = 'patch'
> @@ -38,6 +39,8 @@ options = [
>          short = 'Show the applied patches'),
>      opt('-u', '--unapplied', action = 'store_true',
>          short = 'Show the unapplied patches'),
> +    opt('-s', '--stat', action = 'store_true',
> +        short = 'Show a diffstat summary of the specified patches'),
>      ] + argparse.diff_opts_option()
> 
>  directory = DirectoryHasRepository(log = False)
> @@ -61,10 +64,13 @@ def func(parser, options, args):
>          # individual patches or commit ids
>          patches = args
> 
> -    options.diff_flags.extend(color_diff_flags())
> +    if not options.stat:
> +        options.diff_flags.extend(color_diff_flags())
>      commit_ids = [git_id(crt_series, patch) for patch in patches]
>      commit_str = '\n'.join([git.pretty_commit(commit_id,
>                                                flags = options.diff_flags)
>                              for commit_id in commit_ids])
> +    if options.stat:
> +        commit_str = gitlib.diffstat(commit_str)
>      if commit_str:
>          pager(commit_str)
> 
> 
> -- 
> Catalin
>