diff --git a/rebuild_if_needed.sh b/rebuild_if_needed.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ff8811e394eb83594c65c2c48a07e1b7795735a5
--- /dev/null
+++ b/rebuild_if_needed.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+git remote update > /dev/null 2>&1
+
+needsUpdate () {
+    UPSTREAM=${1:-'@{u}'}
+    LOCAL=$(git rev-parse @)
+    REMOTE=$(git rev-parse "$UPSTREAM")
+    BASE=$(git merge-base @ "$UPSTREAM")
+
+    if [ $LOCAL = $REMOTE ]; then
+        return 1
+        #echo "Up-to-date"
+    elif [ $LOCAL = $BASE ]; then
+        return 0
+        #echo "Need to pull"
+    #elif [ $REMOTE = $BASE ]; then
+        #echo "Need to push"
+    #else
+        #echo "Diverged"
+    fi
+    return 1
+}
+
+if needsUpdate; then
+    git pull ; mvn clean install 
+else
+    echo "No rebuild is needed."
+fi