1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-06-08 08:56:10 +02:00

Merge branch 'rr/needs-clean-work-tree'

* rr/needs-clean-work-tree:
  Porcelain scripts: Rewrite cryptic "needs update" error message
This commit is contained in:
Junio C Hamano 2010-11-29 17:52:32 -08:00
commit e4663556cf
4 changed files with 34 additions and 28 deletions

View File

@ -201,10 +201,7 @@ test true = "$rebase" && {
die "updating an unborn branch with changes added to the index"
fi
else
git update-index --ignore-submodules --refresh &&
git diff-files --ignore-submodules --quiet &&
git diff-index --ignore-submodules --cached --quiet HEAD -- ||
die "refusing to pull with rebase: your working tree is not up-to-date"
require_clean_work_tree "pull with rebase" "Please commit or stash them."
fi
oldremoteref= &&
. git-parse-remote &&

View File

@ -153,14 +153,6 @@ run_pre_rebase_hook () {
fi
}
require_clean_work_tree () {
# test if working tree is dirty
git rev-parse --verify HEAD > /dev/null &&
git update-index --ignore-submodules --refresh &&
git diff-files --quiet --ignore-submodules &&
git diff-index --cached --quiet HEAD --ignore-submodules -- ||
die "Working tree is dirty"
}
ORIG_REFLOG_ACTION="$GIT_REFLOG_ACTION"
@ -557,7 +549,7 @@ do_next () {
exit "$status"
fi
# Run in subshell because require_clean_work_tree can die.
if ! (require_clean_work_tree)
if ! (require_clean_work_tree "rebase")
then
warn "Commit or stash your changes, and then run"
warn
@ -798,7 +790,7 @@ first and then run 'git rebase --continue' again."
record_in_rewritten "$(cat "$DOTEST"/stopped-sha)"
require_clean_work_tree
require_clean_work_tree "rebase"
do_rest
;;
--abort)
@ -896,7 +888,7 @@ first and then run 'git rebase --continue' again."
comment_for_reflog start
require_clean_work_tree
require_clean_work_tree "rebase" "Please commit or stash them."
if test ! -z "$1"
then

View File

@ -412,19 +412,7 @@ else
fi
fi
# The tree must be really really clean.
if ! git update-index --ignore-submodules --refresh > /dev/null; then
echo >&2 "cannot rebase: you have unstaged changes"
git diff-files --name-status -r --ignore-submodules -- >&2
exit 1
fi
diff=$(git diff-index --cached --name-status -r --ignore-submodules HEAD --)
case "$diff" in
?*) echo >&2 "cannot rebase: your index contains uncommitted changes"
echo >&2 "$diff"
exit 1
;;
esac
require_clean_work_tree "rebase" "Please commit or stash them."
if test -z "$rebase_root"
then

View File

@ -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 /{