Skip to content

Commit

Permalink
Merge branch 'rr/needs-clean-work-tree'
Browse files Browse the repository at this point in the history
* rr/needs-clean-work-tree:
  Porcelain scripts: Rewrite cryptic "needs update" error message
  • Loading branch information
Junio C Hamano committed Nov 30, 2010
2 parents 4ef927a + 92c62a3 commit e466355
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 28 deletions.
5 changes: 1 addition & 4 deletions git-pull.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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 &&
Expand Down
14 changes: 3 additions & 11 deletions git-rebase--interactive.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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
Expand Down
14 changes: 1 addition & 13 deletions git-rebase.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
29 changes: 29 additions & 0 deletions git-sh-setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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 /{
Expand Down

0 comments on commit e466355

Please sign in to comment.