diff options
author | Junio C Hamano <gitster@pobox.com> | 2011-08-24 11:54:50 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-08-26 15:25:41 -0700 |
commit | 1686519a0854ec09ee1cdd6db7f570ea4590dfce (patch) | |
tree | e5c6ef28043247204440b916a250819839c23f25 /git-rebase--interactive.sh | |
parent | ffaaed88aed2e9b7936a0c5b43c1b198db0dc2ab (diff) | |
download | git-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.sh | 12 |
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" |