usage = """%prog [options] [<patch-range>]
Show all the patches in the series or just those in the given
-range. The applied patches are prefixed with a '+' and the unapplied
-ones with a '-'. The current patch is prefixed with a '>'. Empty
-patches are prefixed with a '0'. The '*' postfix is appended to hidden
-patches."""
+range. The applied patches are prefixed with a '+', the unapplied ones
+with a '-' and the hidden ones with a '!'. The current patch is
+prefixed with a '>'. Empty patches are prefixed with a '0'."""
options = [make_option('-b', '--branch',
help = 'use BRANCH instead of the default one'),
make_option('-d', '--description',
help = 'show a short description for each patch',
action = 'store_true'),
+ make_option('--author',
+ help = 'show the author name for each patch',
+ action = 'store_true'),
make_option('-e', '--empty',
help = 'check whether patches are empty '
'(much slower)',
descr_lines = descr.split('\n')
return descr_lines[0].rstrip()
-def __print_patch(patch, hidden, branch_str, prefix, empty_prefix, length,
- options):
+def __get_author(patch):
+ """Extract and return a patch's short description
+ """
+ p = crt_series.get_patch(patch)
+ return p.get_authname();
+
+def __print_patch(patch, branch_str, prefix, empty_prefix, length, options):
"""Print a patch name, description and various markers.
"""
if options.noprefix:
prefix = empty_prefix
patch_str = patch + branch_str
- if not options.noprefix and patch in hidden:
- patch_str += '*'
+
+ if options.description or options.author:
+ patch_str = patch_str.ljust(length)
if options.description:
- print prefix + patch_str.ljust(length) + ' | ' \
- + __get_description(patch)
+ out.stdout(prefix + patch_str + ' | ' + __get_description(patch))
+ elif options.author:
+ out.stdout(prefix + patch_str + ' | ' + __get_author(patch))
else:
- print prefix + patch_str
+ out.stdout(prefix + patch_str)
def func(parser, options, args):
"""Show the patch series
"""
global crt_series
+ # current series patches
+ if options.invisible:
+ applied = unapplied = []
+ hidden = crt_series.get_hidden()
+ elif options.all:
+ applied = crt_series.get_applied()
+ unapplied = crt_series.get_unapplied()
+ hidden = crt_series.get_hidden()
+ else:
+ applied = crt_series.get_applied()
+ unapplied = crt_series.get_unapplied()
+ hidden = []
+
if options.missing:
# switch the series, the one specified with --missing should
# become the current
crt_series = stack.Series(options.missing)
stgit.commands.common.crt_series = crt_series
- cmp_patches = cmp_series.get_applied() + cmp_series.get_unapplied()
+ cmp_patches = applied + unapplied + hidden
+
+ # new current series patches
+ if options.invisible:
+ applied = unapplied = []
+ hidden = crt_series.get_hidden()
+ elif options.all:
+ applied = crt_series.get_applied()
+ unapplied = crt_series.get_unapplied()
+ hidden = crt_series.get_hidden()
+ else:
+ applied = crt_series.get_applied()
+ unapplied = crt_series.get_unapplied()
+ hidden = []
else:
cmp_patches = []
- applied = crt_series.get_applied()
- unapplied = crt_series.get_unapplied()
-
# the filtering range covers the whole series
if args:
- show_patches = parse_patches(args, applied + unapplied, len(applied))
+ show_patches = parse_patches(args, applied + unapplied + hidden,
+ len(applied))
else:
- show_patches = applied + unapplied
+ show_patches = applied + unapplied + hidden
# missing filtering
show_patches = [p for p in show_patches if p not in cmp_patches]
- # hidden patches filtering
- hidden = crt_series.get_hidden()
- if options.invisible:
- show_patches = [p for p in show_patches if p in hidden]
- elif not options.all:
- show_patches = [p for p in show_patches if p not in hidden]
-
# filter the patches
applied = [p for p in applied if p in show_patches]
unapplied = [p for p in unapplied if p in show_patches]
+ hidden = [p for p in hidden if p in show_patches]
if options.short:
- nr = int(config.get('stgit', 'shortnr'))
+ nr = int(config.get('stgit.shortnr'))
if len(applied) > nr:
applied = applied[-(nr+1):]
- if len(unapplied) > nr:
+ n = len(unapplied)
+ if n > nr:
unapplied = unapplied[:nr]
+ elif n < nr:
+ hidden = hidden[:nr-n]
- patches = applied + unapplied
+ patches = applied + unapplied + hidden
if options.count:
- print len(patches)
+ out.stdout(len(patches))
return
if not patches:
return
if options.showbranch:
- branch_str = '@' + crt_series.get_branch()
+ branch_str = '@' + crt_series.get_name()
else:
branch_str = ''
max_len = 0
if len(patches) > 0:
max_len = max([len(i + branch_str) for i in patches])
- max_len += 1
- if len(applied) > 0:
- current = crt_series.get_current()
- if applied[-1] == current:
- del applied[-1]
- else:
- current = None
-
- for p in applied:
- __print_patch(p, hidden, branch_str, '+ ', '0 ', max_len,
- options)
-
- if current:
- __print_patch(current, hidden, branch_str, '> ', '0>', max_len,
- options)
+ if applied:
+ for p in applied[:-1]:
+ __print_patch(p, branch_str, '+ ', '0 ', max_len, options)
+ __print_patch(applied[-1], branch_str, '> ', '0>', max_len,
+ options)
for p in unapplied:
- __print_patch(p, hidden, branch_str, '- ', '0 ', max_len, options)
+ __print_patch(p, branch_str, '- ', '0 ', max_len, options)
+
+ for p in hidden:
+ __print_patch(p, branch_str, '! ', '! ', max_len, options)