-#!/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