diff --git a/tools/lib/git-tools.bash b/tools/lib/git-tools.bash
index 0aa0f6ad8dc62..8351ead33a3d4 100644
--- a/tools/lib/git-tools.bash
+++ b/tools/lib/git-tools.bash
@@ -6,30 +6,28 @@
 # this function has only needed one edit since then, adding localization
 # with gettext, which we can omit.
 require_clean_work_tree () {
+    local action="$1" message="${2-}"
+
     git rev-parse --verify HEAD >/dev/null || exit 1
     git update-index -q --ignore-submodules --refresh
-    err=0
+    local err=0
 
-    if ! git diff-files --quiet --ignore-submodules
-    then
-        echo >&2 "Cannot $1: You have unstaged changes."
+    if ! git diff-files --quiet --ignore-submodules; then
+        echo >&2 "Cannot $action: You have unstaged changes."
         err=1
     fi
 
-    if ! git diff-index --cached --quiet --ignore-submodules HEAD --
-    then
-        if [ $err = 0 ]
-        then
-            echo >&2 "Cannot $1: Your index contains uncommitted changes."
+    if ! git diff-index --cached --quiet --ignore-submodules HEAD --; then
+        if [ $err = 0 ]; then
+            echo >&2 "Cannot $action: Your index contains uncommitted changes."
         else
             echo >&2 "Additionally, your index contains uncommitted changes."
         fi
         err=1
     fi
 
-    if [ $err = 1 ]
-    then
-        test -n "$2" && echo >&2 "$2"
+    if [ $err = 1 ]; then
+        [ -n "$message" ] && echo >&2 "$message"
         exit 1
     fi
 }