blob: 2e29866993ce80a19ecbef55e6dab829009b0a11 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
#!/bin/sh
#
# Copyright (c) 2008 Stephen Haberman
#
test_description='git rebase preserve merges
This test runs git rebase with preserve merges and ensures commits
dropped by the --cherry-pick flag have their childrens parents
rewritten.
'
. ./test-lib.sh
if ! test_have_prereq REBASE_P; then
skip_all='skipping git rebase -p tests, as asked for'
test_done
fi
# set up two branches like this:
#
# A - B - C - D - E
# \
# F - G - H
# \
# I
#
# where B, D and G touch the same file.
test_expect_success 'setup' '
test_commit A file1 &&
test_commit B file1 1 &&
test_commit C file2 &&
test_commit D file1 2 &&
test_commit E file3 &&
git checkout A &&
test_commit F file4 &&
test_commit G file1 3 &&
test_commit H file5 &&
git checkout F &&
test_commit I file6
'
# A - B - C - D - E
# \ \ \
# F - G - H -- L \ --> L
# \ | \
# I -- G2 -- J -- K I -- K
# G2 = same changes as G
test_expect_success 'skip same-resolution merges with -p' '
git checkout H &&
test_must_fail git merge E &&
test_commit L file1 23 &&
git checkout I &&
test_commit G2 file1 3 &&
test_must_fail git merge E &&
test_commit J file1 23 &&
test_commit K file7 file7 &&
git rebase -i -p L &&
test $(git rev-parse HEAD^^) = $(git rev-parse L) &&
test "23" = "$(cat file1)" &&
test "I" = "$(cat file6)" &&
test "file7" = "$(cat file7)"
'
# A - B - C - D - E
# \ \ \
# F - G - H -- L2 \ --> L2
# \ | \
# I -- G3 --- J2 -- K2 I -- G3 -- K2
# G2 = different changes as G
test_expect_success 'keep different-resolution merges with -p' '
git checkout H &&
test_must_fail git merge E &&
test_commit L2 file1 23 &&
git checkout I &&
test_commit G3 file1 4 &&
test_must_fail git merge E &&
test_commit J2 file1 24 &&
test_commit K2 file7 file7 &&
test_must_fail git rebase -i -p L2 &&
echo 234 > file1 &&
git add file1 &&
git rebase --continue &&
test $(git rev-parse HEAD^^^) = $(git rev-parse L2) &&
test "234" = "$(cat file1)" &&
test "I" = "$(cat file6)" &&
test "file7" = "$(cat file7)"
'
test_done
|