From: David KÃ¥gedal <david@xxxxxxxxxxxxx> Improved the python code, eliminating temporary variables and using destructuring binds. And use NUL-separation instead of newlines. Signed-off-by: David KÃ¥gedal <davidk@xxxxxxxxxxxxxx> --- There are still no good test cases for this code, though. stgit/commands/patches.py | 2 +- stgit/commands/refresh.py | 2 +- stgit/git.py | 22 +++++++++++----------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/stgit/commands/patches.py b/stgit/commands/patches.py index b3defb6..fb65b62 100644 --- a/stgit/commands/patches.py +++ b/stgit/commands/patches.py @@ -51,7 +51,7 @@ def func(parser, options, args): """Show the patches modifying a file """ if not args: - files = [stat[1] for stat in git.tree_status(verbose = True)] + files = [path for (stat,path) in git.tree_status(verbose = True)] else: files = args diff --git a/stgit/commands/refresh.py b/stgit/commands/refresh.py index 218075b..f44c58c 100644 --- a/stgit/commands/refresh.py +++ b/stgit/commands/refresh.py @@ -121,7 +121,7 @@ def func(parser, options, args): else: sign_str = None - files = [x[1] for x in git.tree_status(verbose = True)] + files = [path for (stat,path) in git.tree_status(verbose = True)] if args: files = [f for f in files if f in args] diff --git a/stgit/git.py b/stgit/git.py index 7962cdb..f315b05 100644 --- a/stgit/git.py +++ b/stgit/git.py @@ -168,7 +168,7 @@ def exclude_files(): def tree_status(files = None, tree_id = 'HEAD', unknown = False, noexclude = True, verbose = False, diff_flags = []): - """Returns a list of pairs - [status, filename] + """Returns a list of pairs - (status, filename) """ if verbose: out.start('Checking for changes in the working directory') @@ -181,16 +181,16 @@ def tree_status(files = None, tree_id = 'HEAD', unknown = False, # unknown files if unknown: - if noexclude: - exclude = [] - else: - exclude = (['--exclude=%s' % s for s in - ['*.[ao]', '*.pyc', '.*', '*~', '#*', 'TAGS', 'tags']] - + ['--exclude-per-directory=.gitignore'] - + ['--exclude-from=%s' % fn for fn in exclude_files() - if os.path.exists(fn)]) - lines = GRun('git-ls-files', '--others', '--directory', *exclude - ).output_lines() + cmd = ['git-ls-files', '-z', '--others', '--directory'] + if not noexclude: + cmd += ['--exclude=%s' % s for s in + ['*.[ao]', '*.pyc', '.*', '*~', '#*', 'TAGS', 'tags']] + cmd += ['--exclude-per-directory=.gitignore'] + cmd += ['--exclude-from=%s' % fn + for fn in exclude_files() + if os.path.exists(fn)] + + lines = GRun(*cmd).raw_output().split('\0') cache_files += [('?', line) for line in lines] # conflicted files -- 1.5.3.rc6.31.g3c3b - 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