There are times when you need to see PEP8 errors only introduced in a branch, so that you can fix those and say the excuse “I didn’t introduce, those, they’re not my problem.”
This generous script lets you do that. It compares the current branch with a target branch, and shows the new ones in the current branch, and hides the ones in the target.
This requires that you use git, and pep8 should be installed.
#!/bin/bash
CURRENT_BRANCH=`git branch --no-color | grep '*' | sed s/\*\ //`
TARGET_BRANCH=$1
CHANGED_FILE_LIST=filelist.diff.tmp
TARGET_PEP8="$TARGET_BRANCH".pep8.tmp
CURRENT_PEP8="$CURRENT_BRANCH".pep8.tmp
IGNORED_RULES="E501,W293"
if [[ -z "$1" ]]; then
echo 'Usage: ./pep_introduced.sh target_branch'
echo
else
exec 7>&2
exec 2>&-
git checkout $TARGET_BRANCH
git diff --name-only "$TARGET_BRANCH".."$CURRENT_BRANCH" | grep .py < $CHANGED_FILE_LIST
echo > $TARGET_PEP8
echo > $CURRENT_PEP8
while read line
do
pep8 --ignore $IGNORED_RULES $line >> $TARGET_PEP8
done < $CHANGED_FILE_LIST
git checkout $CURRENT_BRANCH
while read line
do
pep8 --ignore $IGNORED_RULES $line >> $CURRENT_PEP8
done < $CHANGED_FILE_LIST
exec 2<&7
exec 7<&-
diff $TARGET_PEP8 $CURRENT_PEP8 | grep '^>' | sed s/^\>\ //
rm $TARGET_PEP8
rm $CURRENT_PEP8
rm $CHANGED_FILE_LIST
fi