summaryrefslogtreecommitdiff
path: root/git-rebase--interactive.sh
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2011-08-24 11:54:50 -0700
committerJunio C Hamano <gitster@pobox.com>2011-08-26 15:25:41 -0700
commit1686519a0854ec09ee1cdd6db7f570ea4590dfce (patch)
treee5c6ef28043247204440b916a250819839c23f25 /git-rebase--interactive.sh
parentffaaed88aed2e9b7936a0c5b43c1b198db0dc2ab (diff)
downloadgit-1686519a0854ec09ee1cdd6db7f570ea4590dfce.tar.gz
rebase -i: notice and warn if "exec $cmd" modifies the index or the working tree
If "exec $cmd" touched the index or the working tree, and exited with non-zero status, the code did not check and warn that there now are uncommitted changes. Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-rebase--interactive.sh')
-rw-r--r--git-rebase--interactive.sh12
1 files changed, 9 insertions, 3 deletions
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index 5c94506098..94f36c254c 100644
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -472,18 +472,24 @@ do_next () {
git rev-parse --verify HEAD > "$state_dir"/stopped-sha
${SHELL:-@SHELL_PATH@} -c "$rest" # Actual execution
status=$?
+ # Run in subshell because require_clean_work_tree can die.
+ dirty=f
+ (require_clean_work_tree "rebase" 2>/dev/null) || dirty=t
if test "$status" -ne 0
then
warn "Execution failed: $rest"
+ test "$dirty" = f ||
+ warn "and made changes to the index and/or the working tree"
+
warn "You can fix the problem, and then run"
warn
warn " git rebase --continue"
warn
exit "$status"
- fi
- # Run in subshell because require_clean_work_tree can die.
- if ! (require_clean_work_tree "rebase")
+ elif test "$dirty" = t
then
+ warn "Execution succeeded: $rest"
+ warn "but left changes to the index and/or the working tree"
warn "Commit or stash your changes, and then run"
warn
warn " git rebase --continue"