Skip to content

Commit

Permalink
Merge branch 'sb/rebase-x'
Browse files Browse the repository at this point in the history
"git rebase -x" can be used without passing "-i" option.

* sb/rebase-x:
  t3404: cleanup double empty lines between tests
  rebase: decouple --exec from --interactive
  • Loading branch information
Junio C Hamano committed Apr 6, 2016
2 parents 3e95e47 + 8172c42 commit 2c657ed
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 22 deletions.
6 changes: 3 additions & 3 deletions Documentation/git-rebase.txt
Original file line number Diff line number Diff line change
Expand Up @@ -391,9 +391,6 @@ idea unless you know what you are doing (see BUGS below).
final history. <cmd> will be interpreted as one or more shell
commands.
+
This option can only be used with the `--interactive` option
(see INTERACTIVE MODE below).
+
You may execute several commands by either using one instance of `--exec`
with several commands:
+
Expand All @@ -406,6 +403,9 @@ or by giving more than one `--exec`:
If `--autosquash` is used, "exec" lines will not be appended for
the intermediate commits, and will only appear at the end of each
squash/fixup series.
+
This uses the `--interactive` machinery internally, but it can be run
without an explicit `--interactive`.

--root::
Rebase all commits reachable from <branch>, instead of
Expand Down
7 changes: 1 addition & 6 deletions git-rebase.sh
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,7 @@ do
;;
--exec=*)
cmd="${cmd}exec ${1#--exec=}${LF}"
test -z "$interactive_rebase" && interactive_rebase=implied
;;
--interactive)
interactive_rebase=explicit
Expand Down Expand Up @@ -348,12 +349,6 @@ do
done
test $# -gt 2 && usage

if test -n "$cmd" &&
test "$interactive_rebase" != explicit
then
die "$(gettext "The --exec option must be used with the --interactive option")"
fi

if test -n "$action"
then
test -z "$in_progress" && die "$(gettext "No rebase in progress?")"
Expand Down
19 changes: 6 additions & 13 deletions t/t3404-rebase-interactive.sh
Original file line number Diff line number Diff line change
Expand Up @@ -771,7 +771,6 @@ test_expect_success 'rebase-i history with funny messages' '
test_cmp expect actual
'


test_expect_success 'prepare for rebase -i --exec' '
git checkout master &&
git checkout -b execute &&
Expand All @@ -780,7 +779,6 @@ test_expect_success 'prepare for rebase -i --exec' '
test_commit three_exec main.txt three_exec
'


test_expect_success 'running "git rebase -i --exec git show HEAD"' '
set_fake_editor &&
git rebase -i --exec "git show HEAD" HEAD~2 >actual &&
Expand All @@ -793,7 +791,6 @@ test_expect_success 'running "git rebase -i --exec git show HEAD"' '
test_cmp expected actual
'


test_expect_success 'running "git rebase --exec git show HEAD -i"' '
git reset --hard execute &&
set_fake_editor &&
Expand All @@ -807,7 +804,6 @@ test_expect_success 'running "git rebase --exec git show HEAD -i"' '
test_cmp expected actual
'


test_expect_success 'running "git rebase -ix git show HEAD"' '
git reset --hard execute &&
set_fake_editor &&
Expand Down Expand Up @@ -835,7 +831,6 @@ test_expect_success 'rebase -ix with several <CMD>' '
test_cmp expected actual
'


test_expect_success 'rebase -ix with several instances of --exec' '
git reset --hard execute &&
set_fake_editor &&
Expand All @@ -850,7 +845,6 @@ test_expect_success 'rebase -ix with several instances of --exec' '
test_cmp expected actual
'


test_expect_success 'rebase -ix with --autosquash' '
git reset --hard execute &&
git checkout -b autosquash &&
Expand All @@ -876,16 +870,15 @@ test_expect_success 'rebase -ix with --autosquash' '
test_cmp expected actual
'


test_expect_success 'rebase --exec without -i shows error message' '
test_expect_success 'rebase --exec works without -i ' '
git reset --hard execute &&
set_fake_editor &&
test_must_fail git rebase --exec "git show HEAD" HEAD~2 2>actual &&
echo "The --exec option must be used with the --interactive option" >expected &&
test_i18ncmp expected actual
rm -rf exec_output &&
EDITOR="echo >invoked_editor" git rebase --exec "echo a line >>exec_output" HEAD~2 2>actual &&
test_i18ngrep "Successfully rebased and updated" actual &&
test_line_count = 2 exec_output &&
test_path_is_missing invoked_editor
'


test_expect_success 'rebase -i --exec without <CMD>' '
git reset --hard execute &&
set_fake_editor &&
Expand Down

0 comments on commit 2c657ed

Please sign in to comment.