chiark / gitweb /
test suite: gdr-import-nostitch: Test -fseries-comments
[dgit.git] / tests / tests / gdr-merge-conflicts
1 #!/bin/bash
2 set -e
3 autoimport=
4 . tests/lib
5
6 t-dependencies NO-DGIT GDR quilt
7
8 t-tstunt-parsechangelog
9 t-setup-import gdr-convert-gbp-noarchive
10
11 t_gdr_xopts+=' --experimental-merge-resolution'
12
13 wreckage-before () {
14         junkref=refs/debrebase/wreckage/junk
15         git update-ref $junkref v2.1
16 }
17
18 wreckage-after () {
19         test '' = "$(t-git-get-ref-exact $junkref)"
20         git for-each-ref refs/debrebase/wreckage | egrep .
21 }
22
23 no-wreckage () {
24         if git for-each-ref refs/debrebase/wreckage | egrep .; then
25                 fail wreckage
26         fi
27 }
28
29 : ----- prepare the baseline -----
30
31 cd $p
32
33 t-gdr-prep-new-upstream 2.1
34 git tag v2.1 upstream
35
36 t-some-changes before
37 t-git-debrebase quick
38
39 : ===== early failure in walk =====
40
41 : ----- prepare other -----
42
43 git checkout -b other
44 t-some-changes other '' -other
45
46 git branch other-before-new-upstream
47
48 t-git-debrebase new-upstream 2.1
49 t-git-next-date
50
51 : ----- prepare master -----
52
53 git checkout master
54 t-git-debrebase new-upstream 2.1
55 t-git-next-date
56
57 git branch master-before-merge
58
59 : ----- make the merge -----
60
61 git merge -s ours other
62
63 # we have to do a little dance to make this not a pseudomerge
64 t-git-next-date
65 dch -a 'Merge, only conflict was in debian/changelog'
66 t-dch-r-rune dch
67 git commit -a --amend --no-edit
68
69 wreckage-before
70
71 t-expect-fail F:'divergent anchors' \
72 t-git-debrebase
73
74 wreckage-after
75
76 : ===== late failure in apply =====
77
78 git checkout other
79 git reset --hard other-before-new-upstream
80
81 echo other-upstream-confict >>docs/README
82 git commit -m 'other-upstream-conflict' docs/README
83
84 t-git-debrebase quick
85
86 no-wreckage
87
88 : ----- make the merge -----
89
90 git checkout master
91 git reset --hard master-before-merge
92
93 t-merge-conflicted-stripping-conflict-markers other docs/README
94 t-git-debrebase stitch
95
96 : ----- expect failure -----
97
98 wreckage-before
99
100 t-expect-fail F:'docs/README' \
101 t-git-debrebase
102
103 wreckage-after
104
105 : ===== resolve the conflict =====
106
107 # omg
108
109 quilt_faff_before () {
110         git checkout -b fix$1 debrebase/wreckage/merged-patchqueue
111         QUILT_PATCHES=debian/patches quilt push -a
112 }
113 quilt_faff_after () {
114         QUILT_PATCHES=debian/patches quilt refresh
115         git add debian/patches
116         git commit -m FIX
117         git reset --hard
118         git clean -xdff
119         t-git-debrebase record-resolved-merge
120         git checkout master
121 }
122
123 : ----- badly -----
124
125 quilt_faff_before 1
126 quilt_faff_after
127
128 t-expect-fail E:'upstream files are not the same' \
129 t-git-debrebase
130
131 t-git-debrebase scrap
132 no-wreckage
133
134 : ----- well -----
135
136 t-expect-fail F:'docs/README' \
137 t-git-debrebase
138 wreckage-after
139
140 quilt_faff_before 2
141 git checkout master docs/README
142 git reset docs/README
143 quilt_faff_after
144
145 t-git-debrebase
146
147 t-gdr-good laundered
148
149 t-ok