X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=git-sh-setup.sh;h=aa16b8356507e4e669ee5c4cb4b5a667942d559e;hb=73e7b2ef6c62b3ec345b557acb71a8da4798c70d;hp=8d54b73d3208064829613499580bad541586c725;hpb=006f424b2d014b8a7c4887b7ddbb57256dd6b8c7;p=thirdparty%2Fgit.git diff --git a/git-sh-setup.sh b/git-sh-setup.sh index 8d54b73d32..aa16b83565 100644 --- a/git-sh-setup.sh +++ b/git-sh-setup.sh @@ -145,6 +145,35 @@ require_work_tree () { die "fatal: $0 cannot be used without a working tree." } +require_clean_work_tree () { + git rev-parse --verify HEAD >/dev/null || exit 1 + git update-index -q --ignore-submodules --refresh + err=0 + + if ! git diff-files --quiet --ignore-submodules + then + echo >&2 "Cannot $1: 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." + else + echo >&2 "Additionally, your index contains uncommitted changes." + fi + err=1 + fi + + if [ $err = 1 ] + then + test -n "$2" && echo >&2 "$2" + exit 1 + fi +} + get_author_ident_from_commit () { pick_author_script=' /^author /{ @@ -206,5 +235,20 @@ case $(uname -s) in find () { /usr/bin/find "$@" } + is_absolute_path () { + case "$1" in + [/\\]* | [A-Za-z]:*) + return 0 ;; + esac + return 1 + } ;; +*) + is_absolute_path () { + case "$1" in + /*) + return 0 ;; + esac + return 1 + } esac