from stgit import argparse, git
help = 'Show the commit corresponding to a patch'
+kind = 'patch'
usage = ['[options] [<patch1>] [<patch2>] [<patch3>..<patch4>]']
description = """
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'),
short = 'Show the unapplied 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
commit_ids = [git_id(crt_series, patch) for patch in patches]
commit_str = '\n'.join([git.pretty_commit(commit_id,