Subject: [PATCH] git-clean: Fix error message if clean.requireForce is not set.

From: Johannes Sixt <[email-masked]>
Date: Mon, 12 Nov 2007 09:27:35 +0100

It was distracting to see this error message:

     clean.requireForce set and -n or -f not given; refusing to clean

even though clean.requireForce was not set at all. This patch distinguishes
the cases and gives a different message depending on whether the
configuration variable is not set or set to true.

While we are here, we also divert the error messages to stderr.

Signed-off-by: Johannes Sixt <[email-masked]>
---
  git-clean.sh |   24 +++++++++++++++---------
  1 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/git-clean.sh b/git-clean.sh
index f4965b8..7138fae 100755
--- a/git-clean.sh
+++ b/git-clean.sh
@@ -25,10 +25,7 @@ rmrf="rm -rf --"
  rm_refuse="echo Not removing"
  echo1="echo"

-# requireForce used to default to false but now it defaults to true.
-# IOW, lack of explicit "clean.requireForce = false" is taken as
-# "clean.requireForce = true".
-disabled=$(git config --bool clean.requireForce || echo true)
+disabled=$(git config --bool clean.requireForce)

  while test $# != 0
  do
@@ -37,10 +34,10 @@ do
  		cleandir=1
  		;;
  	-f)
-		disabled=
+		disabled=false
  		;;
  	-n)
-		disabled=
+		disabled=false
  		rmf="echo Would remove"
  		rmrf="echo Would remove"
  		rm_refuse="echo Would not remove"
@@ -68,10 +65,19 @@ do
  	shift
  done

-if [ "$disabled" = true ]; then
-	echo "clean.requireForce set and -n or -f not given; refusing to clean"
+# requireForce used to default to false but now it defaults to true.
+# IOW, lack of explicit "clean.requireForce = false" is taken as
+# "clean.requireForce = true".
+case "$disabled" in
+"")
+	echo >&2 "clean.requireForce not set and -n or -f not given; refusing to clean"
  	exit 1
-fi
+	;;
+"true")
+	echo >&2 "clean.requireForce set and -n or -f not given; refusing to clean"
+	exit 1
+	;;
+esac

  case "$ignored,$ignoredonly" in
  	1,1) usage;;
-- 
1.5.3.5.1368.g3cabf