On Tue, Nov 25, 2014, at 02:50 PM, David Shea wrote:
- git_files = check_output("git status --porcelain",
shell=True)
+ git_files = check_output("git status --porcelain -z", shell=True)
This is not your bug, but seeing "shell=True" always makes me shudder. It's
perfectly safe here, but I've seen it in other contexts where someone later comes by
and adds a user-provided argument. In a web context, that's an instant remote shell.
In a local context, it's a reliability issue with filenames that might contain shell
metacharacters.
+for gf in git_iter:
# If the file is being removed, or is not in git, or is not part of this
# commit, ignore it
if gf[0] in ('D', '?', ' '):
continue
- # If the file is being renamed, grab the target filename
+
+ # If the file is being renamed, the target filename (which we want) is on
+ # the current line, and the next line is the source, which we want to skip
if gf[0] == 'R':
- target = gf[3:].split(' -> ')[1]
- if is_python(target):
- pylint_files.append(target)
- elif is_python(gf[3:]):
+ git_iter.next()
We're also skipping the next file if something is not in git, which is
not what we want, right? Something like:
if gf[0] in ('?', ' '):
continue
elif gf[0] == 'D':
git_iter.next()