The only extra diff options (given either with -O/--diff-opts) that would affect "stg status" were -C and -M, and those made it crash because it couldn't handle them. So remove those options. Signed-off-by: Karl Hasselström <kha@xxxxxxxxxxx> --- stgit/commands/status.py | 16 +++------------- stgit/git.py | 9 ++++++--- t/t0002-status.sh | 5 ----- 3 files changed, 9 insertions(+), 21 deletions(-) diff --git a/stgit/commands/status.py b/stgit/commands/status.py index 20614b0..94d0b57 100644 --- a/stgit/commands/status.py +++ b/stgit/commands/status.py @@ -59,22 +59,18 @@ options = [make_option('-m', '--modified', make_option('-x', '--noexclude', help = 'do not exclude any files from listing', action = 'store_true'), - make_option('-O', '--diff-opts', - help = 'options to pass to git-diff'), make_option('--reset', help = 'reset the current tree changes', action = 'store_true')] def status(files = None, modified = False, new = False, deleted = False, - conflict = False, unknown = False, noexclude = False, - diff_flags = []): + conflict = False, unknown = False, noexclude = False): """Show the tree status """ cache_files = git.tree_status(files, unknown = (not files), - noexclude = noexclude, - diff_flags = diff_flags) + noexclude = noexclude) filtered = (modified or new or deleted or conflict or unknown) if filtered: @@ -116,11 +112,5 @@ def func(parser, options, args): resolved_all() git.reset() else: - if options.diff_opts: - diff_flags = options.diff_opts.split() - else: - diff_flags = [] - status(args, options.modified, options.new, options.deleted, - options.conflict, options.unknown, options.noexclude, - diff_flags = diff_flags) + options.conflict, options.unknown, options.noexclude) diff --git a/stgit/git.py b/stgit/git.py index 8e6bdf4..35579d4 100644 --- a/stgit/git.py +++ b/stgit/git.py @@ -192,6 +192,9 @@ def ls_files(files, tree = 'HEAD', full_name = True): 'Some of the given paths are either missing or not known to GIT' def parse_git_ls(output): + """Parse the output of git diff-index, diff-files, etc. Doesn't handle + rename/copy output, so don't feed it output generated with the -M + or -C flags.""" t = None for line in output.split('\0'): if not line: @@ -205,7 +208,7 @@ def parse_git_ls(output): t = None def tree_status(files = None, tree_id = 'HEAD', unknown = False, - noexclude = True, verbose = False, diff_flags = []): + noexclude = True, verbose = False): """Get the status of all changed files, or of a selected set of files. Returns a list of pairs - (status, filename). @@ -252,7 +255,7 @@ def tree_status(files = None, tree_id = 'HEAD', unknown = False, # specified when calling the function (i.e. report all files) or # files were specified but already found in the previous step if not files or files_left: - args = diff_flags + [tree_id] + args = [tree_id] if files_left: args += ['--'] + files_left for t, fn in parse_git_ls(GRun('diff-index', '-z', *args).raw_output()): @@ -268,7 +271,7 @@ def tree_status(files = None, tree_id = 'HEAD', unknown = False, # function (i.e. report all files) or files were specified but # already found in the previous step if not files or files_left: - args = list(diff_flags) + args = [] if files_left: args += ['--'] + files_left for t, fn in parse_git_ls(GRun('diff-files', '-z', *args).raw_output()): diff --git a/t/t0002-status.sh b/t/t0002-status.sh index 69c29a0..a030739 100755 --- a/t/t0002-status.sh +++ b/t/t0002-status.sh @@ -182,9 +182,4 @@ test_expect_success 'Status after renaming a file' ' diff -u expected.txt output.txt ' -test_expect_failure 'Status after renaming a file (with rename detection)' ' - stg status --diff-opts=-M > output.txt && - diff -u expected.txt output.txt -' - test_done -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html