Browse Source

Merge branch 'jn/document-rebase-i-p-limitation'

* jn/document-rebase-i-p-limitation:
  rebase -i -p: document shortcomings
maint
Junio C Hamano 15 years ago
parent
commit
d4f8f74bc6
  1. 27
      Documentation/git-rebase.txt
  2. 6
      t/t3404-rebase-interactive.sh

27
Documentation/git-rebase.txt

@ -310,6 +310,11 @@ link:howto/revert-a-faulty-merge.txt[revert-a-faulty-merge How-To] for details). @@ -310,6 +310,11 @@ link:howto/revert-a-faulty-merge.txt[revert-a-faulty-merge How-To] for details).
-p::
--preserve-merges::
Instead of ignoring merges, try to recreate them.
+
This uses the `--interactive` machinery internally, but combining it
with the `--interactive` option explicitly is generally not a good
idea unless you know what you are doing (see BUGS below).


--root::
Rebase all commits reachable from <branch>, instead of
@ -611,6 +616,28 @@ The ripple effect of a "hard case" recovery is especially bad: @@ -611,6 +616,28 @@ The ripple effect of a "hard case" recovery is especially bad:
case" recovery too!


BUGS
----
The todo list presented by `--preserve-merges --interactive` does not
represent the topology of the revision graph. Editing commits and
rewording their commit messages should work fine, but attempts to
reorder commits tend to produce counterintuitive results.

For example, an attempt to rearrange
------------
1 --- 2 --- 3 --- 4 --- 5
------------
to
------------
1 --- 2 --- 4 --- 3 --- 5
------------
by moving the "pick 4" line will result in the following history:
------------
3
/
1 --- 2 --- 4 --- 5
------------

Authors
------
Written by Junio C Hamano <gitster@pobox.com> and

6
t/t3404-rebase-interactive.sh

@ -181,6 +181,12 @@ test_expect_success '-p handles "no changes" gracefully' ' @@ -181,6 +181,12 @@ test_expect_success '-p handles "no changes" gracefully' '
test $HEAD = $(git rev-parse HEAD)
'

test_expect_failure 'exchange two commits with -p' '
FAKE_LINES="2 1" git rebase -i -p HEAD~2 &&
test H = $(git cat-file commit HEAD^ | sed -ne \$p) &&
test G = $(git cat-file commit HEAD | sed -ne \$p)
'

test_expect_success 'preserve merges with -p' '
git checkout -b to-be-preserved master^ &&
: > unrelated-file &&

Loading…
Cancel
Save