This causes cgit to serve error pages, which is undesirable. This reverts commit5229c9b232, reversing changes made tof2b211131f.
116 lines
2.7 KiB
Bash
Executable file
116 lines
2.7 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
test_description='test cherry-picking with --ff option'
|
|
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success setup '
|
|
echo first > file1 &&
|
|
git add file1 &&
|
|
test_tick &&
|
|
git commit -m "first" &&
|
|
git tag first &&
|
|
|
|
git checkout -b other &&
|
|
echo second >> file1 &&
|
|
git add file1 &&
|
|
test_tick &&
|
|
git commit -m "second" &&
|
|
git tag second
|
|
'
|
|
|
|
test_expect_success 'cherry-pick using --ff fast forwards' '
|
|
git checkout master &&
|
|
git reset --hard first &&
|
|
test_tick &&
|
|
git cherry-pick --ff second &&
|
|
test "$(git rev-parse --verify HEAD)" = "$(git rev-parse --verify second)"
|
|
'
|
|
|
|
test_expect_success 'cherry-pick not using --ff does not fast forwards' '
|
|
git checkout master &&
|
|
git reset --hard first &&
|
|
test_tick &&
|
|
git cherry-pick second &&
|
|
test "$(git rev-parse --verify HEAD)" != "$(git rev-parse --verify second)"
|
|
'
|
|
|
|
#
|
|
# We setup the following graph:
|
|
#
|
|
# B---C
|
|
# / /
|
|
# first---A
|
|
#
|
|
# (This has been taken from t3502-cherry-pick-merge.sh)
|
|
#
|
|
test_expect_success 'merge setup' '
|
|
git checkout master &&
|
|
git reset --hard first &&
|
|
echo new line >A &&
|
|
git add A &&
|
|
test_tick &&
|
|
git commit -m "add line to A" A &&
|
|
git tag A &&
|
|
git checkout -b side first &&
|
|
echo new line >B &&
|
|
git add B &&
|
|
test_tick &&
|
|
git commit -m "add line to B" B &&
|
|
git tag B &&
|
|
git checkout master &&
|
|
git merge side &&
|
|
git tag C &&
|
|
git checkout -b new A
|
|
'
|
|
|
|
test_expect_success 'cherry-pick explicit first parent of a non-merge with --ff' '
|
|
git reset --hard A -- &&
|
|
git cherry-pick --ff -m 1 B &&
|
|
git diff --exit-code C --
|
|
'
|
|
|
|
test_expect_success 'cherry pick a merge with --ff but without -m should fail' '
|
|
git reset --hard A -- &&
|
|
test_must_fail git cherry-pick --ff C &&
|
|
git diff --exit-code A --
|
|
'
|
|
|
|
test_expect_success 'cherry pick with --ff a merge (1)' '
|
|
git reset --hard A -- &&
|
|
git cherry-pick --ff -m 1 C &&
|
|
git diff --exit-code C &&
|
|
test "$(git rev-parse --verify HEAD)" = "$(git rev-parse --verify C)"
|
|
'
|
|
|
|
test_expect_success 'cherry pick with --ff a merge (2)' '
|
|
git reset --hard B -- &&
|
|
git cherry-pick --ff -m 2 C &&
|
|
git diff --exit-code C &&
|
|
test "$(git rev-parse --verify HEAD)" = "$(git rev-parse --verify C)"
|
|
'
|
|
|
|
test_expect_success 'cherry pick a merge relative to nonexistent parent with --ff should fail' '
|
|
git reset --hard B -- &&
|
|
test_must_fail git cherry-pick --ff -m 3 C
|
|
'
|
|
|
|
test_expect_success 'cherry pick a root commit with --ff' '
|
|
git reset --hard first -- &&
|
|
git rm file1 &&
|
|
echo first >file2 &&
|
|
git add file2 &&
|
|
git commit --amend -m "file2" &&
|
|
git cherry-pick --ff first &&
|
|
test "$(git rev-parse --verify HEAD)" = "1df192cd8bc58a2b275d842cede4d221ad9000d1"
|
|
'
|
|
|
|
test_expect_success 'cherry-pick --ff on unborn branch' '
|
|
git checkout --orphan unborn &&
|
|
git rm --cached -r . &&
|
|
rm -rf * &&
|
|
git cherry-pick --ff first &&
|
|
test_cmp_rev first HEAD
|
|
'
|
|
|
|
test_done
|