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 <[email protected]> --- 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 _______________________________________________ xorg-devel mailing list [email protected] http://lists.x.org/mailman/listinfo/xorg-devel
