-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
rebase: fix --onto A...B parsing and add tests
The previous patch didn't parse "rebase --onto A...B" correctly when A isn't an empty string. It also tried to be careful to notice a case in which there are more than one merge bases, but forgot to give --all option to merge-base, making the test pointless. Fix these problems and add a test script to verify. Improvements to the script to parse A...B syntax was taken from review comments by Johannes Schindelin. Signed-off-by: しらいし ななこ <nanako3@lavabit.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
- Loading branch information
Nanako Shiraishi
authored and
Junio C Hamano
committed
Jan 7, 2010
1 parent
61dfa1b
commit 9f21e97
Showing
2 changed files
with
94 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
#!/bin/sh | ||
|
||
test_description='git rebase --onto A...B' | ||
|
||
. ./test-lib.sh | ||
. "$TEST_DIRECTORY/lib-rebase.sh" | ||
|
||
# Rebase only the tip commit of "topic" on merge base between "master" | ||
# and "topic". Cannot do this for "side" with "master" because there | ||
# is no single merge base. | ||
# | ||
# | ||
# F---G topic G' | ||
# / / | ||
# A---B---C---D---E master --> A---B---C---D---E | ||
# \ \ / | ||
# \ x | ||
# \ / \ | ||
# H---I---J---K side | ||
|
||
test_expect_success setup ' | ||
test_commit A && | ||
test_commit B && | ||
git branch side && | ||
test_commit C && | ||
git branch topic && | ||
git checkout side && | ||
test_commit H && | ||
git checkout master && | ||
test_tick && | ||
git merge H && | ||
git tag D && | ||
test_commit E && | ||
git checkout topic && | ||
test_commit F && | ||
test_commit G && | ||
git checkout side && | ||
test_tick && | ||
git merge C && | ||
git tag I && | ||
test_commit J && | ||
test_commit K | ||
' | ||
|
||
test_expect_success 'rebase --onto master...topic' ' | ||
git reset --hard && | ||
git checkout topic && | ||
git reset --hard G && | ||
git rebase --onto master...topic F && | ||
git rev-parse HEAD^1 >actual && | ||
git rev-parse C^0 >expect && | ||
test_cmp expect actual | ||
' | ||
|
||
test_expect_success 'rebase --onto master...' ' | ||
git reset --hard && | ||
git checkout topic && | ||
git reset --hard G && | ||
git rebase --onto master... F && | ||
git rev-parse HEAD^1 >actual && | ||
git rev-parse C^0 >expect && | ||
test_cmp expect actual | ||
' | ||
|
||
test_expect_success 'rebase --onto master...side' ' | ||
git reset --hard && | ||
git checkout side && | ||
git reset --hard K && | ||
test_must_fail git rebase --onto master...side J | ||
' | ||
|
||
test_done |