From 0aebdb85d6ff005a9ba9b020266e812c115b1ba0 Mon Sep 17 00:00:00 2001 From: Catalin Marinas Date: Thu, 25 Jan 2007 22:28:39 +0000 Subject: [PATCH] Allow a patch range to be specified for 'series' If a patch range is specified, the series will only show those files. Useful for scripting. Signed-off-by: Catalin Marinas --- contrib/stgit-completion.bash | 1 + stgit/commands/series.py | 35 +++++++++++++++++++++++------------ 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/contrib/stgit-completion.bash b/contrib/stgit-completion.bash index d0d716c..6454ab1 100644 --- a/contrib/stgit-completion.bash +++ b/contrib/stgit-completion.bash @@ -190,6 +190,7 @@ _stg () goto) _stg_patches $command _all_other_patches ;; pop) _stg_patches $command _applied_patches ;; push) _stg_patches $command _unapplied_patches ;; + series) _stg_patches $command _all_patches ;; # patch commands delete) _stg_patches $command _all_patches ;; export) _stg_patches $command _applied_patches ;; diff --git a/stgit/commands/series.py b/stgit/commands/series.py index 61b4a14..3b2d3bf 100644 --- a/stgit/commands/series.py +++ b/stgit/commands/series.py @@ -26,11 +26,12 @@ from stgit import stack, git help = 'print the patch series' -usage = """%prog [options] +usage = """%prog [options] [] -Show all the patches in the series. 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'.""" +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'.""" options = [make_option('-b', '--branch', help = 'use BRANCH instead of the default one'), @@ -75,9 +76,6 @@ def func(parser, options, args): """ global crt_series - if len(args) != 0: - parser.error('incorrect number of arguments') - if options.missing: # switch the series, the one specified with --missing should # become the current @@ -89,12 +87,20 @@ def func(parser, options, args): else: cmp_patches = [] - applied = [p for p in crt_series.get_applied() if p not in cmp_patches] - unapplied = [p for p in crt_series.get_unapplied() if p not in cmp_patches] + applied = crt_series.get_applied() + unapplied = crt_series.get_unapplied() - if options.count: - print len(applied) + len(unapplied) - return + # the filtering range covers the whole series + if args: + show_patches = parse_patches(args, applied + unapplied, len(applied)) + else: + show_patches = applied + unapplied + + # filter the patches + applied = [p for p in applied + if p in show_patches and p not in cmp_patches] + unapplied = [p for p in unapplied + if p in show_patches and p not in cmp_patches] if options.short: if len(applied) > 5: @@ -103,6 +109,11 @@ def func(parser, options, args): unapplied = unapplied[:5] patches = applied + unapplied + + if options.count: + print len(patches) + return + if not patches: return -- 2.11.0