diff options
author | Junio C Hamano <gitster@pobox.com> | 2010-11-29 17:52:32 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-11-29 17:52:32 -0800 |
commit | e4663556cfa0d85e7a80d731b07d4058335761ff (patch) | |
tree | 141596683079fc76435465f3de992a7ddd51abe0 /git-sh-setup.sh | |
parent | Merge branch 'kb/blame-author-email' (diff) | |
parent | Porcelain scripts: Rewrite cryptic "needs update" error message (diff) | |
download | tgif-e4663556cfa0d85e7a80d731b07d4058335761ff.tar.xz |
Merge branch 'rr/needs-clean-work-tree'
* rr/needs-clean-work-tree:
Porcelain scripts: Rewrite cryptic "needs update" error message
Diffstat (limited to 'git-sh-setup.sh')
-rw-r--r-- | git-sh-setup.sh | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/git-sh-setup.sh b/git-sh-setup.sh index ae031a1375..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 /{ |