From: Alex Chiang Date: Fri, 10 Jul 2009 18:56:29 GMT Subject: Re: [StGit PATCH] teach --summary to stg show Message-ID: <20090710185629.GA19324@ldl.fc.hp.com> In-Reply-To: * Catalin Marinas : > Hi Alex, > > Sorry for the loooong delay. No problem. > 2009/6/19 Alex Chiang : > > 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 [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 >