[PATCH] release.sh: abort if local changes are detected.

Peter Hutterer peter.hutterer at who-t.net
Wed Jul 29 18:35:48 PDT 2009


If 'git diff' or 'git status' detect local changes, abort.
This check can be skipped with the --ignore-local-changes option.

Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
 release.sh |   29 +++++++++++++++++++++++++++++
 1 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/release.sh b/release.sh
index 9f7358d..71efa72 100755
--- a/release.sh
+++ b/release.sh
@@ -19,9 +19,19 @@ Options:
   --force       force overwritting an existing release
   --user <name> username on $host_people (default "`whoami`")
   --help        this help message
+  --ignore-local-changes        don't abort on uncommitted local changes
 HELP
 }
 
+abort_for_changes()
+{
+    cat <<ERR
+Uncommitted changes found. Did you forget to commit? Aborting.
+Use --ignore-local-changes to skip this check.
+ERR
+    exit 1
+}
+
 gen_announce_mail()
 {
 case "$tag_previous" in
@@ -81,6 +91,10 @@ while [ $# != 0 ]; do
 	user=$1
 	shift
 	;;
+    --ignore-local-changes)
+        ignorechanges=1
+        shift
+        ;;
     --*)
         echo "error: unknown option"
         usage
@@ -100,6 +114,21 @@ while [ $# != 0 ]; do
     esac
 done
 
+# Check for uncommitted/queued changes.
+if [ "x$ignorechanges" != "x1" ]; then
+    set +e
+    git diff --exit-code > /dev/null 2>&1
+    if [ $? -ne 0 ]; then
+        abort_for_changes
+    fi
+
+    git status > /dev/null 2>&1
+    if [ $? -eq 0 ]; then
+        abort_for_changes
+    fi
+    set -e
+fi
+
 tarball_dir="$(dirname $(find . -name config.status))"
 module="${tag_current%-*}"
 if [ "x$module" = "x$tag_current" ]; then
-- 
1.6.3.rc1.2.g0164.dirty



More information about the xorg-devel mailing list