teach --summary to stg show
PATCH 1/1 teach --summary to stg show
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.
This new option is handy for getting a sense of the scale of your patch-series-in-progress.
You'd think this option wouldn't be necessary, but simply piping the output of stg show -a into diffstat (v1.45) doesn't do the Right Thing(tm):
achiang@bob:linux-2.6$ stg series + export-acpi-pci-root + acpiphp-find-bridges-easy
Quoted 1 line
acpi-pci-detect-ejectable-interface
achiang@bob:linux-2.6$ stg show -a | diffstat b/drivers/acpi/pci_root.c | 16 ------ b/drivers/pci/hotplug/acpi_pcihp.c | 7 -- b/drivers/pci/hotplug/acpiphp_glue.c | 89 +++++++++++------------------------ b/drivers/pci/hotplug/pciehp_acpi.c | 5 + b/include/acpi/acpi_bus.h | 14 +++++ b/include/linux/pci_hotplug.h | 2 drivers/pci/hotplug/acpiphp_glue.c | 14 ----- 7 files changed, 52 insertions(+), 95 deletions(-)
Here is the correct diffstat using the new -s option.
achiang@bob:linux-2.6$ stg show -a -s drivers/acpi/pci_root.c | 16 +------ drivers/pci/hotplug/acpi_pcihp.c | 7 +-- drivers/pci/hotplug/acpiphp_glue.c | 77 ++++++++---------------------------- drivers/pci/hotplug/pciehp_acpi.c | 5 +- include/acpi/acpi_bus.h | 14 +++++++ include/linux/pci_hotplug.h | 2 - 6 files changed, 39 insertions(+), 82 deletions(-)
---
stgit/commands/show.py +12 -4
@@ -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', '--summary', action = 'store_true', + short = 'Show a diffstat summary of the specified patches'), ] + argparse.diff_opts_option() directory = DirectoryHasRepository(log = False)
@@ -62,9 +65,14 @@ def func(parser, options, args): patches = args 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.summary: + commit_str = gitlib.diffstat(git.diff( + rev1 = git_id(crt_series, '%s^' % patches[0]), + rev2 = git_id(crt_series, '%s' % patches[-1]))) + else: + 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 commit_str: pager(commit_str)
Hi Alex,
Sorry for the loooong delay.
2009/6/19 Alex Chiang <[email protected]>:
Quoted 3 lines
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.
Quoted 3 lines
+ 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:
stgit/commands/show.py +7 -1
@@ -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)
Signature · 1 line
Catalin
Alex Chiang
Tested-by* Catalin Marinas <[email protected]>:
Quoted 3 lines
Hi Alex,
Sorry for the loooong delay.
No problem.
Quoted 7 lines
2009/6/19 Alex Chiang <[email protected]>:
Quoted 3 lines
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.
Quoted 7 lines
Quoted 3 lines
+ 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.
[how about that other patch "fix stg mail %(shortlog)s order"? :) ]
/ac
Quoted 41 lines
stgit/commands/show.py +7
-1@@ -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)Signature · 2 lines
-- Catalin
2009/7/10 Alex Chiang <[email protected]>:
Quoted 1 line
[how about that other patch "fix stg mail %(shortlog)s order"? :) ]
I already merged it. Thanks.
Signature · 1 line
Catalin