-
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.
Merge branch 'jc/checkout-merge-base'
* jc/checkout-merge-base: rebase -i: teach --onto A...B syntax rebase: fix --onto A...B parsing and add tests "rebase --onto A...B" replays history on the merge base between A and B "checkout A...B" switches to the merge base between A and B
- Loading branch information
Showing
7 changed files
with
222 additions
and
5 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
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
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
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,105 @@ | ||
#!/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_expect_success 'rebase -i --onto master...topic' ' | ||
git reset --hard && | ||
git checkout topic && | ||
git reset --hard G && | ||
set_fake_editor && | ||
EXPECT_COUNT=1 git rebase -i --onto master...topic F && | ||
git rev-parse HEAD^1 >actual && | ||
git rev-parse C^0 >expect && | ||
test_cmp expect actual | ||
' | ||
|
||
test_expect_success 'rebase -i --onto master...' ' | ||
git reset --hard && | ||
git checkout topic && | ||
git reset --hard G && | ||
set_fake_editor && | ||
EXPECT_COUNT=1 git rebase -i --onto master... F && | ||
git rev-parse HEAD^1 >actual && | ||
git rev-parse C^0 >expect && | ||
test_cmp expect actual | ||
' | ||
|
||
test_expect_success 'rebase -i --onto master...side' ' | ||
git reset --hard && | ||
git checkout side && | ||
git reset --hard K && | ||
test_must_fail git rebase -i --onto master...side J | ||
' | ||
|
||
test_done |