comparison tests/test-backout.t @ 11856:db969ebdebd9

tests: unify test-backout
author Martin Geisler <mg@lazybytes.net>
date Sat, 14 Aug 2010 02:28:53 +0200
parents tests/test-backout@6c82beaaa11a
children 4134686b83e1
comparison
equal deleted inserted replaced
11855:054b0d9c3f0c 11856:db969ebdebd9
1 $ HGMERGE=true; export HGMERGE
2
3 $ hg init basic
4 $ cd basic
5
6 # should complain
7
8 $ hg backout
9 abort: please specify a revision to backout
10 $ hg backout -r 0 0
11 abort: please specify just one revision
12
13 # basic operation
14
15 $ echo a > a
16 $ hg commit -d '0 0' -A -m a
17 adding a
18 $ echo b >> a
19 $ hg commit -d '1 0' -m b
20
21 $ hg backout -d '2 0' tip
22 reverting a
23 changeset 2:2929462c3dff backs out changeset 1:a820f4f40a57
24 $ cat a
25 a
26
27 # file that was removed is recreated
28
29 $ cd ..
30 $ hg init remove
31 $ cd remove
32
33 $ echo content > a
34 $ hg commit -d '0 0' -A -m a
35 adding a
36
37 $ hg rm a
38 $ hg commit -d '1 0' -m b
39
40 $ hg backout -d '2 0' --merge tip
41 adding a
42 changeset 2:de31bdc76c0d backs out changeset 1:76862dcce372
43 $ cat a
44 content
45
46 # backout of backout is as if nothing happened
47
48 $ hg backout -d '3 0' --merge tip
49 removing a
50 changeset 3:7f6d0f120113 backs out changeset 2:de31bdc76c0d
51 $ cat a 2>/dev/null || echo cat: a: No such file or directory
52 cat: a: No such file or directory
53
54 # across branch
55
56 $ cd ..
57 $ hg init branch
58 $ cd branch
59 $ echo a > a
60 $ hg ci -Am0
61 adding a
62 $ echo b > b
63 $ hg ci -Am1
64 adding b
65 $ hg co -C 0
66 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
67
68 should fail
69
70 $ hg backout 1
71 abort: cannot backout change on a different branch
72 $ echo c > c
73 $ hg ci -Am2
74 adding c
75 created new head
76
77 should fail
78
79 $ hg backout 1
80 abort: cannot backout change on a different branch
81
82 # backout with merge
83
84 $ cd ..
85 $ hg init merge
86 $ cd merge
87
88 $ echo line 1 > a
89 $ echo line 2 >> a
90 $ hg commit -d '0 0' -A -m a
91 adding a
92
93 remove line 1
94
95 $ echo line 2 > a
96 $ hg commit -d '1 0' -m b
97
98 $ echo line 3 >> a
99 $ hg commit -d '2 0' -m c
100
101 $ hg backout --merge -d '3 0' 1
102 reverting a
103 created new head
104 changeset 3:26b8ccb9ad91 backs out changeset 1:5a50a024c182
105 merging with changeset 3:26b8ccb9ad91
106 merging a
107 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
108 (branch merge, don't forget to commit)
109 $ hg commit -d '4 0' -m d
110
111 check line 1 is back
112
113 $ cat a
114 line 1
115 line 2
116 line 3
117
118 # backout should not back out subsequent changesets
119
120 $ hg init onecs
121 $ cd onecs
122 $ echo 1 > a
123 $ hg commit -d '0 0' -A -m a
124 adding a
125 $ echo 2 >> a
126 $ hg commit -d '1 0' -m b
127 $ echo 1 > b
128 $ hg commit -d '2 0' -A -m c
129 adding b
130 $ hg backout -d '3 0' 1
131 reverting a
132 created new head
133 changeset 3:3202beb76721 backs out changeset 1:22bca4c721e5
134 the backout changeset is a new head - do not forget to merge
135 (use "backout --merge" if you want to auto-merge)
136 $ hg locate b
137 b
138 $ hg update -C tip
139 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
140 $ hg locate b
141
142 $ cd ..
143 $ hg init m
144 $ cd m
145 $ echo a > a
146 $ hg commit -d '0 0' -A -m a
147 adding a
148 $ echo b > b
149 $ hg commit -d '1 0' -A -m b
150 adding b
151 $ echo c > c
152 $ hg commit -d '2 0' -A -m b
153 adding c
154 $ hg update 1
155 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
156 $ echo d > d
157 $ hg commit -d '3 0' -A -m c
158 adding d
159 created new head
160 $ hg merge 2
161 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
162 (branch merge, don't forget to commit)
163 $ hg commit -d '4 0' -A -m d
164
165 # backout of merge should fail
166
167 $ hg backout 4
168 abort: cannot backout a merge changeset without --parent
169
170 # backout of merge with bad parent should fail
171
172 $ hg backout --parent 0 4
173 abort: cb9a9f314b8b is not a parent of b2f3bb92043e
174
175 # backout of non-merge with parent should fail
176
177 $ hg backout --parent 0 3
178 abort: cannot use --parent on non-merge changeset
179
180 # backout with valid parent should be ok
181
182 $ hg backout -d '5 0' --parent 2 4
183 removing d
184 changeset 5:10e5328c8435 backs out changeset 4:b2f3bb92043e
185
186 $ hg rollback
187 rolling back to revision 4 (undo commit)
188 $ hg update -C
189 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
190
191 $ hg backout -d '6 0' --parent 3 4
192 removing c
193 changeset 5:033590168430 backs out changeset 4:b2f3bb92043e
194
195 $ cd ..
196
197 # named branches
198
199 $ hg init named_branches
200 $ cd named_branches
201
202 $ echo default > default
203 $ hg ci -d '0 0' -Am default
204 adding default
205 $ hg branch branch1
206 marked working directory as branch branch1
207 $ echo branch1 > file1
208 $ hg ci -d '1 0' -Am file1
209 adding file1
210 $ hg branch branch2
211 marked working directory as branch branch2
212 $ echo branch2 > file2
213 $ hg ci -d '2 0' -Am file2
214 adding file2
215 $ hg backout -d '3 0' -r 1 -m 'backout on branch1'
216 removing file1
217 created new head
218 changeset 3:d4e8f6db59fb backs out changeset 1:bf1602f437f3
219 the backout changeset is a new head - do not forget to merge
220 (use "backout --merge" if you want to auto-merge)
221
222 XXX maybe backout shouldn't suggest a merge here as it is a different branch?
223
224 on branch2 with branch1 not merged, so file1 should still exist:
225
226 $ hg id
227 45bbcd363bf0 (branch2)
228 $ hg st -A
229 C default
230 C file1
231 C file2
232
233 on branch2 with branch1 merged, so file1 should be gone:
234
235 $ hg merge
236 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
237 (branch merge, don't forget to commit)
238 $ hg ci -d '4 0' -m 'merge backout of branch1'
239 $ hg id
240 22149cdde76d (branch2) tip
241 $ hg st -A
242 C default
243 C file2
244
245 on branch1, so no file1 and file2:
246
247 $ hg co -C branch1
248 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
249 $ hg id
250 bf1602f437f3 (branch1)
251 $ hg st -A
252 C default
253 C file1
254
255 $ exit 0