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'
Show the commit log and the diff corresponding to the given patches.
The output is similar to that generated by 'git show'."""
+args = [argparse.patch_range(argparse.applied_patches,
+ argparse.unapplied_patches,
+ argparse.hidden_patches)]
options = [
- opt('-b', '--branch',
+ opt('-b', '--branch', args = [argparse.stg_branches],
short = 'Use BRANCH instead of the default branch'),
opt('-a', '--applied', action = 'store_true',
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()
+directory = DirectoryHasRepository(log = False)
def func(parser, options, args):
"""Show commit log and diff
patches = crt_series.get_unapplied()
elif len(args) == 0:
patches = ['HEAD']
+ elif '..' in ' '.join(args):
+ # patch ranges
+ applied = crt_series.get_applied()
+ unapplied = crt_series.get_unapplied()
+ patches = parse_patches(args, applied + unapplied + \
+ crt_series.get_hidden(), len(applied))
else:
- if len(args) == 1 and args[0].find('..') == -1:
- # single patch or commit id
- patches = args
- else:
- applied = crt_series.get_applied()
- unapplied = crt_series.get_unapplied()
- patches = parse_patches(args, applied + unapplied + \
- crt_series.get_hidden(), len(applied))
+ # individual patches or commit ids
+ patches = args
+ 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)