##// END OF EJS Templates
rebase: provides test case for (issue5610)...
marmoute -
r33137:918e7dcf stable
parent child Browse files
Show More
@@ -1,274 +1,326 b''
1 1 $ cat >> $HGRCPATH <<EOF
2 2 > [extensions]
3 3 > rebase=
4 4 >
5 5 > [phases]
6 6 > publish=False
7 7 >
8 8 > [alias]
9 9 > tglog = log -G --template "{rev}: '{desc}' {branches}\n"
10 10 > tglogp = log -G --template "{rev}:{phase} '{desc}' {branches}\n"
11 11 > EOF
12 12
13 13
14 14 $ hg init a
15 15 $ cd a
16 16
17 17 $ echo A > A
18 18 $ hg ci -Am A
19 19 adding A
20 20
21 21 $ echo B > B
22 22 $ hg ci -Am B
23 23 adding B
24 24
25 25 $ echo C >> A
26 26 $ hg ci -m C
27 27
28 28 $ hg up -q -C 0
29 29
30 30 $ echo D >> A
31 31 $ hg ci -m D
32 32 created new head
33 33
34 34 $ echo E > E
35 35 $ hg ci -Am E
36 36 adding E
37 37
38 38 $ cd ..
39 39
40 40
41 41 Changes during an interruption - continue:
42 42
43 43 $ hg clone -q -u . a a1
44 44 $ cd a1
45 45
46 46 $ hg tglog
47 47 @ 4: 'E'
48 48 |
49 49 o 3: 'D'
50 50 |
51 51 | o 2: 'C'
52 52 | |
53 53 | o 1: 'B'
54 54 |/
55 55 o 0: 'A'
56 56
57 57 Rebasing B onto E:
58 58
59 59 $ hg rebase -s 1 -d 4
60 60 rebasing 1:27547f69f254 "B"
61 61 rebasing 2:965c486023db "C"
62 62 merging A
63 63 warning: conflicts while merging A! (edit, then use 'hg resolve --mark')
64 64 unresolved conflicts (see hg resolve, then hg rebase --continue)
65 65 [1]
66 66
67 67 Force a commit on C during the interruption:
68 68
69 69 $ hg up -q -C 2 --config 'extensions.rebase=!'
70 70
71 71 $ echo 'Extra' > Extra
72 72 $ hg add Extra
73 73 $ hg ci -m 'Extra' --config 'extensions.rebase=!'
74 74
75 75 Force this commit onto secret phase
76 76
77 77 $ hg phase --force --secret 6
78 78
79 79 $ hg tglogp
80 80 @ 6:secret 'Extra'
81 81 |
82 82 | o 5:draft 'B'
83 83 | |
84 84 | o 4:draft 'E'
85 85 | |
86 86 | o 3:draft 'D'
87 87 | |
88 88 o | 2:draft 'C'
89 89 | |
90 90 o | 1:draft 'B'
91 91 |/
92 92 o 0:draft 'A'
93 93
94 94 Resume the rebasing:
95 95
96 96 $ hg rebase --continue
97 97 already rebased 1:27547f69f254 "B" as 45396c49d53b
98 98 rebasing 2:965c486023db "C"
99 99 merging A
100 100 warning: conflicts while merging A! (edit, then use 'hg resolve --mark')
101 101 unresolved conflicts (see hg resolve, then hg rebase --continue)
102 102 [1]
103 103
104 104 Solve the conflict and go on:
105 105
106 106 $ echo 'conflict solved' > A
107 107 $ rm A.orig
108 108 $ hg resolve -m A
109 109 (no more unresolved files)
110 110 continue: hg rebase --continue
111 111
112 112 $ hg rebase --continue
113 113 already rebased 1:27547f69f254 "B" as 45396c49d53b
114 114 rebasing 2:965c486023db "C"
115 115 warning: new changesets detected on source branch, not stripping
116 116
117 117 $ hg tglogp
118 118 o 7:draft 'C'
119 119 |
120 120 | o 6:secret 'Extra'
121 121 | |
122 122 o | 5:draft 'B'
123 123 | |
124 124 @ | 4:draft 'E'
125 125 | |
126 126 o | 3:draft 'D'
127 127 | |
128 128 | o 2:draft 'C'
129 129 | |
130 130 | o 1:draft 'B'
131 131 |/
132 132 o 0:draft 'A'
133 133
134 134 $ cd ..
135 135
136 136
137 137 Changes during an interruption - abort:
138 138
139 139 $ hg clone -q -u . a a2
140 140 $ cd a2
141 141
142 142 $ hg tglog
143 143 @ 4: 'E'
144 144 |
145 145 o 3: 'D'
146 146 |
147 147 | o 2: 'C'
148 148 | |
149 149 | o 1: 'B'
150 150 |/
151 151 o 0: 'A'
152 152
153 153 Rebasing B onto E:
154 154
155 155 $ hg rebase -s 1 -d 4
156 156 rebasing 1:27547f69f254 "B"
157 157 rebasing 2:965c486023db "C"
158 158 merging A
159 159 warning: conflicts while merging A! (edit, then use 'hg resolve --mark')
160 160 unresolved conflicts (see hg resolve, then hg rebase --continue)
161 161 [1]
162 162
163 163 Force a commit on B' during the interruption:
164 164
165 165 $ hg up -q -C 5 --config 'extensions.rebase=!'
166 166
167 167 $ echo 'Extra' > Extra
168 168 $ hg add Extra
169 169 $ hg ci -m 'Extra' --config 'extensions.rebase=!'
170 170
171 171 $ hg tglog
172 172 @ 6: 'Extra'
173 173 |
174 174 o 5: 'B'
175 175 |
176 176 o 4: 'E'
177 177 |
178 178 o 3: 'D'
179 179 |
180 180 | o 2: 'C'
181 181 | |
182 182 | o 1: 'B'
183 183 |/
184 184 o 0: 'A'
185 185
186 186 Abort the rebasing:
187 187
188 188 $ hg rebase --abort
189 189 warning: new changesets detected on target branch, can't strip
190 190 rebase aborted
191 191
192 192 $ hg tglog
193 193 @ 6: 'Extra'
194 194 |
195 195 o 5: 'B'
196 196 |
197 197 o 4: 'E'
198 198 |
199 199 o 3: 'D'
200 200 |
201 201 | o 2: 'C'
202 202 | |
203 203 | o 1: 'B'
204 204 |/
205 205 o 0: 'A'
206 206
207 207 $ cd ..
208 208
209 209 Changes during an interruption - abort (again):
210 210
211 211 $ hg clone -q -u . a a3
212 212 $ cd a3
213 213
214 214 $ hg tglogp
215 215 @ 4:draft 'E'
216 216 |
217 217 o 3:draft 'D'
218 218 |
219 219 | o 2:draft 'C'
220 220 | |
221 221 | o 1:draft 'B'
222 222 |/
223 223 o 0:draft 'A'
224 224
225 225 Rebasing B onto E:
226 226
227 227 $ hg rebase -s 1 -d 4
228 228 rebasing 1:27547f69f254 "B"
229 229 rebasing 2:965c486023db "C"
230 230 merging A
231 231 warning: conflicts while merging A! (edit, then use 'hg resolve --mark')
232 232 unresolved conflicts (see hg resolve, then hg rebase --continue)
233 233 [1]
234 234
235 235 Change phase on B and B'
236 236
237 237 $ hg up -q -C 5 --config 'extensions.rebase=!'
238 238 $ hg phase --public 1
239 239 $ hg phase --public 5
240 240 $ hg phase --secret -f 2
241 241
242 242 $ hg tglogp
243 243 @ 5:public 'B'
244 244 |
245 245 o 4:public 'E'
246 246 |
247 247 o 3:public 'D'
248 248 |
249 249 | o 2:secret 'C'
250 250 | |
251 251 | o 1:public 'B'
252 252 |/
253 253 o 0:public 'A'
254 254
255 255 Abort the rebasing:
256 256
257 257 $ hg rebase --abort
258 258 warning: can't clean up public changesets 45396c49d53b
259 259 rebase aborted
260 260
261 261 $ hg tglogp
262 262 @ 5:public 'B'
263 263 |
264 264 o 4:public 'E'
265 265 |
266 266 o 3:public 'D'
267 267 |
268 268 | o 2:secret 'C'
269 269 | |
270 270 | o 1:public 'B'
271 271 |/
272 272 o 0:public 'A'
273 273
274
275 Test rebase interrupted by hooks (pretxncommit)
276
277 $ hg up 2
278 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
279 $ echo F > F
280 $ hg add F
281 $ hg ci -m F
282 $ hg rebase --source 2 --dest 5 --tool internal:other --config 'hooks.pretxncommit=hg log -r $HG_NODE | grep "summary: C"'
283 rebasing 2:965c486023db "C"
284 summary: C
285 rebasing 6:a0b2430ebfb8 "F" (tip)
286 transaction abort!
287 rollback completed
288 abort: pretxncommit hook exited with status 1
289 [255]
290 $ hg tglogp
291 @ 7:secret 'C'
292 |
293 | @ 6:secret 'F'
294 | |
295 o | 5:public 'B'
296 | |
297 o | 4:public 'E'
298 | |
299 o | 3:public 'D'
300 | |
301 | o 2:secret 'C'
302 | |
303 | o 1:public 'B'
304 |/
305 o 0:public 'A'
306
307 $ hg rebase --continue
308 already rebased 2:965c486023db "C" as 401ccec5e39f
309 rebasing 6:a0b2430ebfb8 "F"
310 saved backup bundle to $TESTTMP/a3/.hg/strip-backup/965c486023db-aa6250e7-backup.hg (glob)
311 $ hg tglogp
312 @ 6:secret 'F'
313 |
314 o 5:secret 'C'
315 |
316 o 4:public 'B'
317 |
318 o 3:public 'E'
319 |
320 o 2:public 'D'
321 |
322 | o 1:public 'B'
323 |/
324 o 0:public 'A'
325
274 326 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now