summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xtools/lintstack.sh26
1 files changed, 22 insertions, 4 deletions
diff --git a/tools/lintstack.sh b/tools/lintstack.sh
index 848a16fa5..42c6a60b3 100755
--- a/tools/lintstack.sh
+++ b/tools/lintstack.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
-# Copyright (c) 2012, AT&T Labs, Yun Mao <yunmao@gmail.com>
+# Copyright (c) 2012-2013, AT&T Labs, Yun Mao <yunmao@gmail.com>
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -15,13 +15,31 @@
# License for the specific language governing permissions and limitations
# under the License.
-# Use lintstack.py to compare pylint errors between HEAD and HEAD~1
-
+# Use lintstack.py to compare pylint errors.
+# We run pylint twice, once on HEAD, once on the code before the latest
+# commit for review.
set -e
TOOLS_DIR=$(cd $(dirname "$0") && pwd)
GITHEAD=`git rev-parse HEAD`
cp -f $TOOLS_DIR/lintstack.py $TOOLS_DIR/lintstack.head.py
-git checkout HEAD~1
+
+if git rev-parse HEAD^2 2>/dev/null; then
+ # The HEAD is a Merge commit. Here, the patch to review is
+ # HEAD^2, the master branch is at HEAD^1, and the patch was
+ # written based on HEAD^2~1.
+ PREV_COMMIT=`git rev-parse HEAD^2~1`
+ git checkout HEAD~1
+ # The git merge is necessary for reviews with a series of patches.
+ # If not, this is a no-op so won't hurt either.
+ git merge $PREV_COMMIT
+else
+ # The HEAD is not a merge commit. This won't happen on gerrit.
+ # Most likely you are running against your own patch locally.
+ # We assume the patch to examine is HEAD, and we compare it against
+ # HEAD~1
+ git checkout HEAD~1
+fi
+
# First generate tools/pylint_exceptions from HEAD~1
$TOOLS_DIR/lintstack.head.py generate
# Then use that as a reference to compare against HEAD