|
1 Test for the pick command |
|
2 |
|
3 $ cat >> $HGRCPATH <<EOF |
|
4 > [alias] |
|
5 > glog = log -G -T "{rev}:{node|short} {desc}\n" |
|
6 > [extensions] |
|
7 > EOF |
|
8 $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH |
|
9 |
|
10 $ mkcommit() { |
|
11 > echo "$1" > "$1" |
|
12 > hg add "$1" |
|
13 > hg ci -m "add $1" |
|
14 > } |
|
15 |
|
16 $ hg init repo |
|
17 $ cd repo |
|
18 $ hg help pick |
|
19 hg pick [-r] rev |
|
20 |
|
21 aliases: grab |
|
22 |
|
23 move a commit on the top of working directory parent and updates to it. |
|
24 |
|
25 options: |
|
26 |
|
27 -r --rev REV revision to pick |
|
28 -c --continue continue interrupted pick |
|
29 -a --abort abort interrupted pick |
|
30 -t --tool TOOL specify merge tool |
|
31 |
|
32 (some details hidden, use --verbose to show complete help) |
|
33 |
|
34 $ mkcommit a |
|
35 $ mkcommit b |
|
36 $ mkcommit c |
|
37 |
|
38 $ hg glog |
|
39 @ 2:4538525df7e2 add c |
|
40 | |
|
41 o 1:7c3bad9141dc add b |
|
42 | |
|
43 o 0:1f0dee641bb7 add a |
|
44 |
|
45 |
|
46 Grabbing an ancestor |
|
47 |
|
48 $ hg pick -r 7c3bad9141dc |
|
49 abort: cannot pick an ancestor revision |
|
50 [255] |
|
51 |
|
52 Grabbing the working directory parent |
|
53 |
|
54 $ hg pick -r . |
|
55 abort: cannot pick an ancestor revision |
|
56 [255] |
|
57 |
|
58 Specifying multiple revisions to pick |
|
59 |
|
60 $ hg pick 1f0dee641bb7 -r 7c3bad9141dc |
|
61 abort: specify just one revision |
|
62 [255] |
|
63 |
|
64 Specifying no revisions to pick |
|
65 |
|
66 $ hg pick |
|
67 abort: empty revision set |
|
68 [255] |
|
69 |
|
70 Continuing without interrupted pick |
|
71 |
|
72 $ hg pick --continue |
|
73 abort: no interrupted pick state exists |
|
74 [255] |
|
75 |
|
76 Aborting without interrupted pick |
|
77 |
|
78 $ hg pick --abort |
|
79 abort: no interrupted pick state exists |
|
80 [255] |
|
81 |
|
82 Specifying both continue and revs |
|
83 |
|
84 $ hg up 1f0dee641bb7 |
|
85 0 files updated, 0 files merged, 2 files removed, 0 files unresolved |
|
86 $ hg pick -r 4538525df7e2 --continue |
|
87 abort: cannot specify both --continue and revision |
|
88 [255] |
|
89 |
|
90 Making new branch heads |
|
91 |
|
92 $ mkcommit x |
|
93 created new head |
|
94 $ mkcommit y |
|
95 |
|
96 $ hg glog |
|
97 @ 4:d46dc301d92f add y |
|
98 | |
|
99 o 3:8e224524cd09 add x |
|
100 | |
|
101 | o 2:4538525df7e2 add c |
|
102 | | |
|
103 | o 1:7c3bad9141dc add b |
|
104 |/ |
|
105 o 0:1f0dee641bb7 add a |
|
106 |
|
107 Grabbing a revision |
|
108 |
|
109 $ hg pick 7c3bad9141dc |
|
110 picking 1:7c3bad9141dc "add b" |
|
111 1 new orphan changesets |
|
112 $ hg glog |
|
113 @ 5:7c15c05db6fa add b |
|
114 | |
|
115 o 4:d46dc301d92f add y |
|
116 | |
|
117 o 3:8e224524cd09 add x |
|
118 | |
|
119 | * 2:4538525df7e2 add c |
|
120 | | |
|
121 | x 1:7c3bad9141dc add b |
|
122 |/ |
|
123 o 0:1f0dee641bb7 add a |
|
124 |
|
125 |
|
126 When pick does not create any changes |
|
127 |
|
128 $ hg graft -r 4538525df7e2 |
|
129 grafting 2:4538525df7e2 "add c" |
|
130 |
|
131 $ hg glog |
|
132 @ 6:c4636a81ebeb add c |
|
133 | |
|
134 o 5:7c15c05db6fa add b |
|
135 | |
|
136 o 4:d46dc301d92f add y |
|
137 | |
|
138 o 3:8e224524cd09 add x |
|
139 | |
|
140 | * 2:4538525df7e2 add c |
|
141 | | |
|
142 | x 1:7c3bad9141dc add b |
|
143 |/ |
|
144 o 0:1f0dee641bb7 add a |
|
145 |
|
146 $ hg pick -r 4538525df7e2 |
|
147 picking 2:4538525df7e2 "add c" |
|
148 note: picking 2:4538525df7e2 created no changes to commit |
|
149 |
|
150 $ hg glog |
|
151 @ 6:c4636a81ebeb add c |
|
152 | |
|
153 o 5:7c15c05db6fa add b |
|
154 | |
|
155 o 4:d46dc301d92f add y |
|
156 | |
|
157 o 3:8e224524cd09 add x |
|
158 | |
|
159 o 0:1f0dee641bb7 add a |
|
160 |
|
161 interrupted pick |
|
162 |
|
163 $ hg up d46dc301d92f |
|
164 0 files updated, 0 files merged, 2 files removed, 0 files unresolved |
|
165 $ echo foo > c |
|
166 $ hg ci -Aqm "foo to c" |
|
167 $ hg pick -r c4636a81ebeb |
|
168 picking 6:c4636a81ebeb "add c" |
|
169 merging c |
|
170 warning: conflicts while merging c! (edit, then use 'hg resolve --mark') |
|
171 unresolved merge conflicts (see hg help resolve) |
|
172 [1] |
|
173 |
|
174 $ echo foobar > c |
|
175 $ hg resolve --all --mark |
|
176 (no more unresolved files) |
|
177 continue: hg pick --continue |
|
178 $ hg pick --continue |
|
179 $ hg glog |
|
180 @ 8:44e155eb95c7 add c |
|
181 | |
|
182 o 7:2ccc03d1d096 foo to c |
|
183 | |
|
184 | o 5:7c15c05db6fa add b |
|
185 |/ |
|
186 o 4:d46dc301d92f add y |
|
187 | |
|
188 o 3:8e224524cd09 add x |
|
189 | |
|
190 o 0:1f0dee641bb7 add a |
|
191 |
|
192 |
|
193 When interrupted pick results in no changes to commit |
|
194 |
|
195 $ hg up d46dc301d92f |
|
196 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
197 $ echo bar > c |
|
198 $ hg add c |
|
199 $ hg ci -m "foo to c" |
|
200 created new head |
|
201 |
|
202 $ hg up 44e155eb95c7 |
|
203 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
204 |
|
205 $ hg pick 4e04628911f6 |
|
206 picking 9:4e04628911f6 "foo to c" |
|
207 merging c |
|
208 warning: conflicts while merging c! (edit, then use 'hg resolve --mark') |
|
209 unresolved merge conflicts (see hg help resolve) |
|
210 [1] |
|
211 $ echo foobar > c |
|
212 $ hg resolve -m |
|
213 (no more unresolved files) |
|
214 continue: hg pick --continue |
|
215 |
|
216 $ hg pick --continue |
|
217 note: picking 9:4e04628911f6 created no changes to commit |
|
218 |
|
219 Testing the abort functionality of hg pick |
|
220 |
|
221 $ echo foo > b |
|
222 $ hg ci -Aqm "foo to b" |
|
223 $ hg glog -r .^:: |
|
224 @ 10:c437988de89f foo to b |
|
225 | |
|
226 o 8:44e155eb95c7 add c |
|
227 | |
|
228 ~ |
|
229 |
|
230 $ hg pick -r 7c15c05db6fa |
|
231 picking 5:7c15c05db6fa "add b" |
|
232 merging b |
|
233 warning: conflicts while merging b! (edit, then use 'hg resolve --mark') |
|
234 unresolved merge conflicts (see hg help resolve) |
|
235 [1] |
|
236 |
|
237 $ hg pick --abort |
|
238 aborting pick, updating to c437988de89f |
|
239 |
|
240 $ hg glog |
|
241 @ 10:c437988de89f foo to b |
|
242 | |
|
243 o 8:44e155eb95c7 add c |
|
244 | |
|
245 o 7:2ccc03d1d096 foo to c |
|
246 | |
|
247 | o 5:7c15c05db6fa add b |
|
248 |/ |
|
249 o 4:d46dc301d92f add y |
|
250 | |
|
251 o 3:8e224524cd09 add x |
|
252 | |
|
253 o 0:1f0dee641bb7 add a |
|
254 |
|
255 |
|
256 Trying to pick a public changeset |
|
257 |
|
258 $ hg phase -r 7c15c05db6fa -p |
|
259 |
|
260 $ hg pick -r 7c15c05db6fa |
|
261 abort: cannot pick public changesets: 7c15c05db6fa |
|
262 (see 'hg help phases' for details) |
|
263 [255] |
|
264 |
|
265 $ hg glog |
|
266 @ 10:c437988de89f foo to b |
|
267 | |
|
268 o 8:44e155eb95c7 add c |
|
269 | |
|
270 o 7:2ccc03d1d096 foo to c |
|
271 | |
|
272 | o 5:7c15c05db6fa add b |
|
273 |/ |
|
274 o 4:d46dc301d92f add y |
|
275 | |
|
276 o 3:8e224524cd09 add x |
|
277 | |
|
278 o 0:1f0dee641bb7 add a |
|
279 |
|
280 Checking phase preservation while picking secret changeset |
|
281 |
|
282 In case of merge conflicts |
|
283 |
|
284 $ hg phase -r 7c15c05db6fa -s -f |
|
285 |
|
286 $ hg pick -r 7c15c05db6fa |
|
287 picking 5:7c15c05db6fa "add b" |
|
288 merging b |
|
289 warning: conflicts while merging b! (edit, then use 'hg resolve --mark') |
|
290 unresolved merge conflicts (see hg help resolve) |
|
291 [1] |
|
292 |
|
293 $ echo bar > b |
|
294 $ hg resolve -m |
|
295 (no more unresolved files) |
|
296 continue: hg pick --continue |
|
297 |
|
298 $ hg pick --continue |
|
299 $ hg phase -r . |
|
300 11: secret |
|
301 |
|
302 No merge conflicts |
|
303 |
|
304 $ hg up d46dc301d92f |
|
305 0 files updated, 0 files merged, 3 files removed, 0 files unresolved |
|
306 $ echo foo > l |
|
307 $ hg add l |
|
308 $ hg ci -qm "added l" --secret |
|
309 |
|
310 $ hg phase -r . |
|
311 12: secret |
|
312 |
|
313 $ hg glog |
|
314 @ 12:508d572e7053 added l |
|
315 | |
|
316 | o 11:10427de9e26e add b |
|
317 | | |
|
318 | o 10:c437988de89f foo to b |
|
319 | | |
|
320 | o 8:44e155eb95c7 add c |
|
321 | | |
|
322 | o 7:2ccc03d1d096 foo to c |
|
323 |/ |
|
324 o 4:d46dc301d92f add y |
|
325 | |
|
326 o 3:8e224524cd09 add x |
|
327 | |
|
328 o 0:1f0dee641bb7 add a |
|
329 |
|
330 $ hg up 10427de9e26e |
|
331 3 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
332 |
|
333 $ hg pick -r 508d572e7053 |
|
334 picking 12:508d572e7053 "added l" |
|
335 |
|
336 $ hg phase -r . |
|
337 13: secret |
|
338 $ cd .. |
|
339 |
|
340 Check pick behavior regarding working copy branch (issue6089) |
|
341 ------------------------------------------------------------- |
|
342 |
|
343 The branch of the picked changeset should be preserved, and the working copy updated |
|
344 |
|
345 $ hg init issue6089 |
|
346 $ cd issue6089 |
|
347 |
|
348 $ touch a |
|
349 $ hg add a |
|
350 $ hg ci -m 'first commit on default' |
|
351 |
|
352 $ hg branch foo |
|
353 marked working directory as branch foo |
|
354 (branches are permanent and global, did you want a bookmark?) |
|
355 $ touch b |
|
356 $ hg add b |
|
357 $ hg ci -m 'first commit on foo' |
|
358 |
|
359 $ hg up default |
|
360 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
361 $ echo test > a |
|
362 $ hg ci -m 'second commit on default' |
|
363 $ hg log -G --template '{node|short}: {branch}\n' --rev 'all()+wdir()' |
|
364 o ffffffffffff: default |
|
365 | |
|
366 @ 5f07cbf7d111: default |
|
367 | |
|
368 | o 96bb2057779e: foo |
|
369 |/ |
|
370 o d03a6bcc83cd: default |
|
371 |
|
372 |
|
373 $ hg pick 1 |
|
374 picking 1:96bb2057779e "first commit on foo" |
|
375 $ hg log --template '{branch}\n' -r tip |
|
376 foo |
|
377 $ hg branch |
|
378 foo |
|
379 $ hg log -G --template '{node|short}: {branch}\n' --rev 'all()+wdir()' |
|
380 o ffffffffffff: foo |
|
381 | |
|
382 @ 5344a77549bd: foo |
|
383 | |
|
384 o 5f07cbf7d111: default |
|
385 | |
|
386 o d03a6bcc83cd: default |
|
387 |
|
388 $ cd .. |