Merge branch 'aw/rebase-i-p'
* aw/rebase-i-p: rebase -i -p: include non-first-parent commits in todo list
This commit is contained in:
commit
23f229d8cd
@ -713,7 +713,6 @@ then
|
|||||||
# parents to rewrite and skipping dropped commits would
|
# parents to rewrite and skipping dropped commits would
|
||||||
# prematurely end our probe
|
# prematurely end our probe
|
||||||
merges_option=
|
merges_option=
|
||||||
first_after_upstream="$(git rev-list --reverse --first-parent $upstream..$orig_head | head -n 1)"
|
|
||||||
else
|
else
|
||||||
merges_option="--no-merges --cherry-pick"
|
merges_option="--no-merges --cherry-pick"
|
||||||
fi
|
fi
|
||||||
@ -746,7 +745,7 @@ do
|
|||||||
preserve=t
|
preserve=t
|
||||||
for p in $(git rev-list --parents -1 $sha1 | cut -d' ' -s -f2-)
|
for p in $(git rev-list --parents -1 $sha1 | cut -d' ' -s -f2-)
|
||||||
do
|
do
|
||||||
if test -f "$rewritten"/$p -a \( $p != $onto -o $sha1 = $first_after_upstream \)
|
if test -f "$rewritten"/$p
|
||||||
then
|
then
|
||||||
preserve=f
|
preserve=f
|
||||||
fi
|
fi
|
||||||
|
@ -295,7 +295,7 @@ test_expect_success 'preserve merges with -p' '
|
|||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'edit ancestor with -p' '
|
test_expect_success 'edit ancestor with -p' '
|
||||||
FAKE_LINES="1 edit 2 3 4" git rebase -i -p HEAD~3 &&
|
FAKE_LINES="1 2 edit 3 4" git rebase -i -p HEAD~3 &&
|
||||||
echo 2 > unrelated-file &&
|
echo 2 > unrelated-file &&
|
||||||
test_tick &&
|
test_tick &&
|
||||||
git commit -m L2-modified --amend unrelated-file &&
|
git commit -m L2-modified --amend unrelated-file &&
|
||||||
|
@ -37,7 +37,15 @@ export GIT_AUTHOR_EMAIL
|
|||||||
# \
|
# \
|
||||||
# B2 <-- origin/topic
|
# B2 <-- origin/topic
|
||||||
#
|
#
|
||||||
# In all cases, 'topic' is rebased onto 'origin/topic'.
|
# Clone 4 (merge using second parent as base):
|
||||||
|
#
|
||||||
|
# A1--A2--B3 <-- origin/master
|
||||||
|
# \
|
||||||
|
# B1--A3--M <-- topic
|
||||||
|
# \ /
|
||||||
|
# \--A4 <-- topic2
|
||||||
|
# \
|
||||||
|
# B2 <-- origin/topic
|
||||||
|
|
||||||
test_expect_success 'setup for merge-preserving rebase' \
|
test_expect_success 'setup for merge-preserving rebase' \
|
||||||
'echo First > A &&
|
'echo First > A &&
|
||||||
@ -57,6 +65,13 @@ test_expect_success 'setup for merge-preserving rebase' \
|
|||||||
git merge origin/master
|
git merge origin/master
|
||||||
) &&
|
) &&
|
||||||
|
|
||||||
|
git clone ./. clone4 &&
|
||||||
|
(
|
||||||
|
cd clone4 &&
|
||||||
|
git checkout -b topic origin/topic &&
|
||||||
|
git merge origin/master
|
||||||
|
) &&
|
||||||
|
|
||||||
echo Fifth > B &&
|
echo Fifth > B &&
|
||||||
git add B &&
|
git add B &&
|
||||||
git commit -m "Add different B" &&
|
git commit -m "Add different B" &&
|
||||||
@ -123,4 +138,15 @@ test_expect_success 'rebase -p preserves no-ff merges' '
|
|||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'rebase -p works when base inside second parent' '
|
||||||
|
(
|
||||||
|
cd clone4 &&
|
||||||
|
git fetch &&
|
||||||
|
git rebase -p HEAD^2 &&
|
||||||
|
test 1 = $(git rev-list --all --pretty=oneline | grep "Modify A" | wc -l) &&
|
||||||
|
test 1 = $(git rev-list --all --pretty=oneline | grep "Modify B" | wc -l) &&
|
||||||
|
test 1 = $(git rev-list --all --pretty=oneline | grep "Merge remote-tracking branch " | wc -l)
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
@ -37,7 +37,7 @@ test_expect_success 'setup' '
|
|||||||
# -- C1 --
|
# -- C1 --
|
||||||
#
|
#
|
||||||
test_expect_success 'squash F1 into D1' '
|
test_expect_success 'squash F1 into D1' '
|
||||||
FAKE_LINES="1 squash 3 2" git rebase -i -p B1 &&
|
FAKE_LINES="1 squash 4 2 3" git rebase -i -p B1 &&
|
||||||
test "$(git rev-parse HEAD^2)" = "$(git rev-parse C1)" &&
|
test "$(git rev-parse HEAD^2)" = "$(git rev-parse C1)" &&
|
||||||
test "$(git rev-parse HEAD~2)" = "$(git rev-parse B1)" &&
|
test "$(git rev-parse HEAD~2)" = "$(git rev-parse B1)" &&
|
||||||
git tag E2
|
git tag E2
|
||||||
|
Loading…
Reference in New Issue
Block a user