##// END OF EJS Templates
test: add an extra case for obsolescence distributed case...
Boris Feld -
r34652:e88dbbcf default
parent child Browse files
Show More
@@ -1,207 +1,490 b''
1 1 =============================
2 2 Test distributed obsolescence
3 3 =============================
4 4
5 5 This file test various cases where data (changeset, phase, obsmarkers) is
6 6 added to the repository in a specific order. Usually, this order is unlikely
7 7 to happen in the local case but can easily happen in the distributed case.
8 8
9 9 $ unset HGUSER
10 10 $ unset EMAIL
11 11 $ . $TESTDIR/testlib/obsmarker-common.sh
12 12 $ cat >> $HGRCPATH << EOF
13 > [extensions]
14 > rebase =
13 15 > [experimental]
14 16 > evolution = all
15 17 > [phases]
16 18 > publish = False
17 19 > [templates]
18 20 > obsfatesuccessors = "{if(successors, " as ")}{join(successors, ", ")}"
19 21 > obsfateverb = "{obsfateverb(successors)}"
20 22 > obsfateoperations = "{if(obsfateoperations(markers), " using {join(obsfateoperations(markers), ", ")}")}"
21 23 > obsfateusers = "{if(obsfateusers(markers), " by {join(obsfateusers(markers), ", ")}")}"
22 24 > obsfatedate = "{if(obsfatedate(markers), "{ifeq(min(obsfatedate(markers)), max(obsfatedate(markers)), " (at {min(obsfatedate(markers))|isodate})", " (between {min(obsfatedate(markers))|isodate} and {max(obsfatedate(markers))|isodate})")}")}"
23 25 > obsfate = "{obsfateverb}{obsfateoperations}{obsfatesuccessors}{obsfateusers}{obsfatedate}; "
24 26 > [ui]
25 27 > logtemplate= {rev}:{node|short} {desc} {if(succsandmarkers, "[{succsandmarkers % "{obsfate}"}]")}\n
26 28 > EOF
27 29
28 30 Check distributed chain building
29 31 ================================
30 32
31 33 Test case where a changeset is marked as a successor of another local
32 34 changeset while the successor has already been obsoleted remotely.
33 35
34 36 The chain of evolution should seamlessly connect and all but the new version
35 37 (created remotely) should be seen as obsolete.
36 38
37 39 Initial setup
38 40
39 41 $ mkdir distributed-chain-building
40 42 $ cd distributed-chain-building
41 43 $ hg init server
42 44 $ cd server
43 45 $ cat << EOF >> .hg/hgrc
44 46 > [ui]
45 47 > username = server
46 48 > EOF
47 49 $ mkcommit ROOT
48 50 $ mkcommit c_A0
49 51 $ hg up 'desc("ROOT")'
50 52 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
51 53 $ mkcommit c_A1
52 54 created new head
53 55 $ hg up 'desc("ROOT")'
54 56 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
55 57 $ mkcommit c_B0
56 58 created new head
57 59 $ hg debugobsolete `getid 'desc("c_A0")'` `getid 'desc("c_A1")'`
58 60 obsoleted 1 changesets
59 61 $ hg log -G --hidden
60 62 @ 3:e5d7dda7cd28 c_B0
61 63 |
62 64 | o 2:7f6b0a6f5c25 c_A1
63 65 |/
64 66 | x 1:e1b46f0f979f c_A0 [rewritten as 2:7f6b0a6f5c25 by server (at 1970-01-01 00:00 +0000); ]
65 67 |/
66 68 o 0:e82fb8d02bbf ROOT
67 69
68 70 $ hg debugobsolete
69 71 e1b46f0f979f52748347ff8729c59f2ef56e6fe2 7f6b0a6f5c25345a83870963efd827c1798a5959 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'server'}
70 72 $ cd ..
71 73
72 74 duplicate the repo for the client:
73 75
74 76 $ cp -R server client
75 77 $ cat << EOF >> client/.hg/hgrc
76 78 > [paths]
77 79 > default = ../server/
78 80 > [ui]
79 81 > username = client
80 82 > EOF
81 83
82 84 server side: create new revision on the server (obsoleting another one)
83 85
84 86 $ cd server
85 87 $ hg up 'desc("ROOT")'
86 88 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
87 89 $ mkcommit c_B1
88 90 created new head
89 91 $ hg debugobsolete `getid 'desc("c_B0")'` `getid 'desc("c_B1")'`
90 92 obsoleted 1 changesets
91 93 $ hg log -G
92 94 @ 4:391a2bf12b1b c_B1
93 95 |
94 96 | o 2:7f6b0a6f5c25 c_A1
95 97 |/
96 98 o 0:e82fb8d02bbf ROOT
97 99
98 100 $ hg log -G --hidden
99 101 @ 4:391a2bf12b1b c_B1
100 102 |
101 103 | x 3:e5d7dda7cd28 c_B0 [rewritten as 4:391a2bf12b1b by server (at 1970-01-01 00:00 +0000); ]
102 104 |/
103 105 | o 2:7f6b0a6f5c25 c_A1
104 106 |/
105 107 | x 1:e1b46f0f979f c_A0 [rewritten as 2:7f6b0a6f5c25 by server (at 1970-01-01 00:00 +0000); ]
106 108 |/
107 109 o 0:e82fb8d02bbf ROOT
108 110
109 111 $ hg debugobsolete
110 112 e1b46f0f979f52748347ff8729c59f2ef56e6fe2 7f6b0a6f5c25345a83870963efd827c1798a5959 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'server'}
111 113 e5d7dda7cd28e6b3f79437e5b8122a38ece0255c 391a2bf12b1b8b05a72400ae36b26d50a091dc22 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'server'}
112 114 $ cd ..
113 115
114 116 client side: create a marker between two common changesets
115 117 (client is not aware of the server activity yet)
116 118
117 119 $ cd client
118 120 $ hg debugobsolete `getid 'desc("c_A1")'` `getid 'desc("c_B0")'`
119 121 obsoleted 1 changesets
120 122 $ hg log -G
121 123 @ 3:e5d7dda7cd28 c_B0
122 124 |
123 125 o 0:e82fb8d02bbf ROOT
124 126
125 127 $ hg log -G --hidden
126 128 @ 3:e5d7dda7cd28 c_B0
127 129 |
128 130 | x 2:7f6b0a6f5c25 c_A1 [rewritten as 3:e5d7dda7cd28 by client (at 1970-01-01 00:00 +0000); ]
129 131 |/
130 132 | x 1:e1b46f0f979f c_A0 [rewritten as 2:7f6b0a6f5c25 by server (at 1970-01-01 00:00 +0000); ]
131 133 |/
132 134 o 0:e82fb8d02bbf ROOT
133 135
134 136 $ hg debugobsolete
135 137 e1b46f0f979f52748347ff8729c59f2ef56e6fe2 7f6b0a6f5c25345a83870963efd827c1798a5959 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'server'}
136 138 7f6b0a6f5c25345a83870963efd827c1798a5959 e5d7dda7cd28e6b3f79437e5b8122a38ece0255c 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'client'}
137 139
138 140 client side: pull from the server
139 141 (the new successors should take over)
140 142
141 143 $ hg up 'desc("ROOT")'
142 144 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
143 145 $ hg pull
144 146 pulling from $TESTTMP/distributed-chain-building/server (glob)
145 147 searching for changes
146 148 adding changesets
147 149 adding manifests
148 150 adding file changes
149 151 added 1 changesets with 1 changes to 1 files (+1 heads)
150 152 1 new obsolescence markers
151 153 obsoleted 1 changesets
152 154 (run 'hg heads' to see heads)
153 155 $ hg log -G
154 156 o 4:391a2bf12b1b c_B1
155 157 |
156 158 @ 0:e82fb8d02bbf ROOT
157 159
158 160 $ hg log -G --hidden
159 161 o 4:391a2bf12b1b c_B1
160 162 |
161 163 | x 3:e5d7dda7cd28 c_B0 [rewritten as 4:391a2bf12b1b by server (at 1970-01-01 00:00 +0000); ]
162 164 |/
163 165 | x 2:7f6b0a6f5c25 c_A1 [rewritten as 3:e5d7dda7cd28 by client (at 1970-01-01 00:00 +0000); ]
164 166 |/
165 167 | x 1:e1b46f0f979f c_A0 [rewritten as 2:7f6b0a6f5c25 by server (at 1970-01-01 00:00 +0000); ]
166 168 |/
167 169 @ 0:e82fb8d02bbf ROOT
168 170
169 171 $ hg debugobsolete
170 172 e1b46f0f979f52748347ff8729c59f2ef56e6fe2 7f6b0a6f5c25345a83870963efd827c1798a5959 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'server'}
171 173 7f6b0a6f5c25345a83870963efd827c1798a5959 e5d7dda7cd28e6b3f79437e5b8122a38ece0255c 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'client'}
172 174 e5d7dda7cd28e6b3f79437e5b8122a38ece0255c 391a2bf12b1b8b05a72400ae36b26d50a091dc22 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'server'}
173 175
174 176 server side: receive client push
175 177 (the other way around, pushing to the server, the obsolete changesets stay
176 178 obsolete on the server side but the marker is sent out.)
177 179
178 180 $ hg rollback
179 181 repository tip rolled back to revision 3 (undo pull)
180 182 $ hg push -f
181 183 pushing to $TESTTMP/distributed-chain-building/server (glob)
182 184 searching for changes
183 185 adding changesets
184 186 adding manifests
185 187 adding file changes
186 188 added 0 changesets with 0 changes to 1 files
187 189 1 new obsolescence markers
188 190 obsoleted 1 changesets
189 191 $ hg -R ../server/ log -G
190 192 @ 4:391a2bf12b1b c_B1
191 193 |
192 194 o 0:e82fb8d02bbf ROOT
193 195
194 196 $ hg -R ../server/ log -G --hidden
195 197 @ 4:391a2bf12b1b c_B1
196 198 |
197 199 | x 3:e5d7dda7cd28 c_B0 [rewritten as 4:391a2bf12b1b by server (at 1970-01-01 00:00 +0000); ]
198 200 |/
199 201 | x 2:7f6b0a6f5c25 c_A1 [rewritten as 3:e5d7dda7cd28 by client (at 1970-01-01 00:00 +0000); ]
200 202 |/
201 203 | x 1:e1b46f0f979f c_A0 [rewritten as 2:7f6b0a6f5c25 by server (at 1970-01-01 00:00 +0000); ]
202 204 |/
203 205 o 0:e82fb8d02bbf ROOT
204 206
205 207 $ hg debugobsolete
206 208 e1b46f0f979f52748347ff8729c59f2ef56e6fe2 7f6b0a6f5c25345a83870963efd827c1798a5959 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'server'}
207 209 7f6b0a6f5c25345a83870963efd827c1798a5959 e5d7dda7cd28e6b3f79437e5b8122a38ece0255c 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'client'}
210 $ cd ..
211
212 Check getting changesets after getting the markers
213 =================================================
214
215 This test case covers the scenario where commits are received -after- we
216 received some obsolescence markers turning them obsolete.
217
218 For example, we pull some successors from a repository (with associated
219 predecessors marker chain) and then later we pull some intermediate
220 precedessors changeset from another repository. Obsolescence markers must
221 apply to the intermediate changeset. They have to be obsolete (and hidden).
222
223 Avoiding pulling the changeset in the first place is a tricky decision because
224 there could be non-obsolete ancestors that need to be pulled, but the
225 discovery cannot currently find these (this is not the case in this tests). In
226 addition, we could also have to pull the changeset because they have children.
227 In this case, they would not be hidden (yet) because of the orphan descendant,
228 but they would still have to be obsolete. (This is not tested in this case
229 either).
230
231 $ mkdir distributed-chain-building
232 $ cd distributed-chain-building
233 $ hg init server
234 $ cd server
235 $ cat << EOF >> .hg/hgrc
236 > [ui]
237 > username = server
238 > EOF
239 $ mkcommit ROOT
240 $ cd ..
241 $ hg clone server repo-Alice
242 updating to branch default
243 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
244 $ cat << EOF >> repo-Alice/.hg/hgrc
245 > [ui]
246 > username = alice
247 > EOF
248 $ hg clone server repo-Bob
249 updating to branch default
250 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
251 $ cat << EOF >> repo-Bob/.hg/hgrc
252 > [ui]
253 > username = bob
254 > EOF
255 $ hg clone server repo-Celeste
256 updating to branch default
257 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
258 $ cat << EOF >> repo-Celeste/.hg/hgrc
259 > [ui]
260 > username = celeste
261 > EOF
262
263 Create some changesets locally
264
265 $ cd repo-Alice
266 $ mkcommit c_A0
267 $ mkcommit c_B0
268 $ cd ..
269
270 Bob pulls from Alice and rewrites them
271
272 $ cd repo-Bob
273 $ hg pull ../repo-Alice
274 pulling from ../repo-Alice
275 searching for changes
276 adding changesets
277 adding manifests
278 adding file changes
279 added 2 changesets with 2 changes to 2 files
280 (run 'hg update' to get a working copy)
281 $ hg up 'desc("c_A")'
282 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
283 $ hg commit --amend -m 'c_A1'
284 $ hg rebase -r 'desc("c_B0")' -d . # no easy way to rewrite the message with the rebase
285 rebasing 2:ef908e42ce65 "c_B0"
286 $ hg up
287 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
288 $ hg commit --amend -m 'c_B1'
289 $ hg log -G
290 @ 5:956063ac4557 c_B1
291 |
292 o 3:5b5708a437f2 c_A1
293 |
294 o 0:e82fb8d02bbf ROOT
295
296 $ hg log -G --hidden
297 @ 5:956063ac4557 c_B1
298 |
299 | x 4:5ffb9e311b35 c_B0 [rewritten using amend as 5:956063ac4557 by bob (at 1970-01-01 00:00 +0000); ]
300 |/
301 o 3:5b5708a437f2 c_A1
302 |
303 | x 2:ef908e42ce65 c_B0 [rewritten using rebase as 4:5ffb9e311b35 by bob (at 1970-01-01 00:00 +0000); ]
304 | |
305 | x 1:d33b0a3a6464 c_A0 [rewritten using amend as 3:5b5708a437f2 by bob (at 1970-01-01 00:00 +0000); ]
306 |/
307 o 0:e82fb8d02bbf ROOT
308
309 $ hg debugobsolete
310 d33b0a3a64647d79583526be8107802b1f9fedfa 5b5708a437f27665db42c5a261a539a1bcb2a8c2 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'amend', 'user': 'bob'}
311 ef908e42ce65ef57f970d799acaddde26f58a4cc 5ffb9e311b35f6ab6f76f667ca5d6e595645481b 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'rebase', 'user': 'bob'}
312 5ffb9e311b35f6ab6f76f667ca5d6e595645481b 956063ac4557828781733b2d5677a351ce856f59 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'amend', 'user': 'bob'}
313 $ cd ..
314
315 Celeste pulls from Bob and rewrites them again
316
317 $ cd repo-Celeste
318 $ hg pull ../repo-Bob
319 pulling from ../repo-Bob
320 searching for changes
321 adding changesets
322 adding manifests
323 adding file changes
324 added 2 changesets with 2 changes to 2 files
325 3 new obsolescence markers
326 (run 'hg update' to get a working copy)
327 $ hg up 'desc("c_A")'
328 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
329 $ hg commit --amend -m 'c_A2'
330 $ hg rebase -r 'desc("c_B1")' -d . # no easy way to rewrite the message with the rebase
331 rebasing 2:956063ac4557 "c_B1"
332 $ hg up
333 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
334 $ hg commit --amend -m 'c_B2'
335 $ hg log -G
336 @ 5:77ae25d99ff0 c_B2
337 |
338 o 3:9866d64649a5 c_A2
339 |
340 o 0:e82fb8d02bbf ROOT
341
342 $ hg log -G --hidden
343 @ 5:77ae25d99ff0 c_B2
344 |
345 | x 4:3cf8de21cc22 c_B1 [rewritten using amend as 5:77ae25d99ff0 by celeste (at 1970-01-01 00:00 +0000); ]
346 |/
347 o 3:9866d64649a5 c_A2
348 |
349 | x 2:956063ac4557 c_B1 [rewritten using rebase as 4:3cf8de21cc22 by celeste (at 1970-01-01 00:00 +0000); ]
350 | |
351 | x 1:5b5708a437f2 c_A1 [rewritten using amend as 3:9866d64649a5 by celeste (at 1970-01-01 00:00 +0000); ]
352 |/
353 o 0:e82fb8d02bbf ROOT
354
355 $ hg debugobsolete
356 5ffb9e311b35f6ab6f76f667ca5d6e595645481b 956063ac4557828781733b2d5677a351ce856f59 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'amend', 'user': 'bob'}
357 d33b0a3a64647d79583526be8107802b1f9fedfa 5b5708a437f27665db42c5a261a539a1bcb2a8c2 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'amend', 'user': 'bob'}
358 ef908e42ce65ef57f970d799acaddde26f58a4cc 5ffb9e311b35f6ab6f76f667ca5d6e595645481b 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'rebase', 'user': 'bob'}
359 5b5708a437f27665db42c5a261a539a1bcb2a8c2 9866d64649a5d9c5991fe119c7b2c33898114e10 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'amend', 'user': 'celeste'}
360 956063ac4557828781733b2d5677a351ce856f59 3cf8de21cc2282186857d2266eb6b1f9cb85ecf3 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'rebase', 'user': 'celeste'}
361 3cf8de21cc2282186857d2266eb6b1f9cb85ecf3 77ae25d99ff07889e181126b1171b94bec8e5227 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'amend', 'user': 'celeste'}
362
363 Celeste now pushes to the server
364
365 (note: it would be enough to just have direct Celeste -> Alice exchange here.
366 However using a central server seems more common)
367
368 $ hg push
369 pushing to $TESTTMP/distributed-chain-building/distributed-chain-building/server (glob)
370 searching for changes
371 adding changesets
372 adding manifests
373 adding file changes
374 added 2 changesets with 2 changes to 2 files
375 6 new obsolescence markers
376 $ cd ..
377
378 Now Alice pulls from the server, then from Bob
379
380 Alice first retrieves the new evolution of its changesets and associated markers
381 from the server (note: could be from Celeste directly)
382
383 $ cd repo-Alice
384 $ hg up 'desc(ROOT)'
385 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
386 $ hg pull
387 pulling from $TESTTMP/distributed-chain-building/distributed-chain-building/server (glob)
388 searching for changes
389 adding changesets
390 adding manifests
391 adding file changes
392 added 2 changesets with 0 changes to 2 files (+1 heads)
393 6 new obsolescence markers
394 obsoleted 2 changesets
395 (run 'hg heads' to see heads)
396 $ hg debugobsolete
397 3cf8de21cc2282186857d2266eb6b1f9cb85ecf3 77ae25d99ff07889e181126b1171b94bec8e5227 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'amend', 'user': 'celeste'}
398 5b5708a437f27665db42c5a261a539a1bcb2a8c2 9866d64649a5d9c5991fe119c7b2c33898114e10 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'amend', 'user': 'celeste'}
399 5ffb9e311b35f6ab6f76f667ca5d6e595645481b 956063ac4557828781733b2d5677a351ce856f59 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'amend', 'user': 'bob'}
400 956063ac4557828781733b2d5677a351ce856f59 3cf8de21cc2282186857d2266eb6b1f9cb85ecf3 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'rebase', 'user': 'celeste'}
401 d33b0a3a64647d79583526be8107802b1f9fedfa 5b5708a437f27665db42c5a261a539a1bcb2a8c2 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'amend', 'user': 'bob'}
402 ef908e42ce65ef57f970d799acaddde26f58a4cc 5ffb9e311b35f6ab6f76f667ca5d6e595645481b 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'rebase', 'user': 'bob'}
403
404 Then, she pulls from Bob, pulling predecessors of the changeset she has
405 already pulled. The changesets are not obsoleted in the Bob repo yet. Their
406 successors do not exist in Bob repository yet.
407
408 $ hg pull ../repo-Bob
409 pulling from ../repo-Bob
410 searching for changes
411 adding changesets
412 adding manifests
413 adding file changes
414 added 2 changesets with 0 changes to 2 files (+1 heads)
415 (run 'hg heads' to see heads)
416 $ hg log -G
417 o 4:77ae25d99ff0 c_B2
418 |
419 o 3:9866d64649a5 c_A2
420 |
421 @ 0:e82fb8d02bbf ROOT
422
423 $ hg debugobsolete
424 3cf8de21cc2282186857d2266eb6b1f9cb85ecf3 77ae25d99ff07889e181126b1171b94bec8e5227 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'amend', 'user': 'celeste'}
425 5b5708a437f27665db42c5a261a539a1bcb2a8c2 9866d64649a5d9c5991fe119c7b2c33898114e10 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'amend', 'user': 'celeste'}
426 5ffb9e311b35f6ab6f76f667ca5d6e595645481b 956063ac4557828781733b2d5677a351ce856f59 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'amend', 'user': 'bob'}
427 956063ac4557828781733b2d5677a351ce856f59 3cf8de21cc2282186857d2266eb6b1f9cb85ecf3 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'rebase', 'user': 'celeste'}
428 d33b0a3a64647d79583526be8107802b1f9fedfa 5b5708a437f27665db42c5a261a539a1bcb2a8c2 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'amend', 'user': 'bob'}
429 ef908e42ce65ef57f970d799acaddde26f58a4cc 5ffb9e311b35f6ab6f76f667ca5d6e595645481b 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'rebase', 'user': 'bob'}
430
431 Same tests, but change coming from a bundle
432 (testing with a bundle is interesting because absolutely no discovery or
433 decision is made in that case, so receiving the changesets are not an option).
434
435 $ hg rollback
436 repository tip rolled back to revision 4 (undo pull)
437 $ hg log -G
438 o 4:77ae25d99ff0 c_B2
439 |
440 o 3:9866d64649a5 c_A2
441 |
442 @ 0:e82fb8d02bbf ROOT
443
444 $ hg debugobsolete
445 3cf8de21cc2282186857d2266eb6b1f9cb85ecf3 77ae25d99ff07889e181126b1171b94bec8e5227 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'amend', 'user': 'celeste'}
446 5b5708a437f27665db42c5a261a539a1bcb2a8c2 9866d64649a5d9c5991fe119c7b2c33898114e10 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'amend', 'user': 'celeste'}
447 5ffb9e311b35f6ab6f76f667ca5d6e595645481b 956063ac4557828781733b2d5677a351ce856f59 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'amend', 'user': 'bob'}
448 956063ac4557828781733b2d5677a351ce856f59 3cf8de21cc2282186857d2266eb6b1f9cb85ecf3 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'rebase', 'user': 'celeste'}
449 d33b0a3a64647d79583526be8107802b1f9fedfa 5b5708a437f27665db42c5a261a539a1bcb2a8c2 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'amend', 'user': 'bob'}
450 ef908e42ce65ef57f970d799acaddde26f58a4cc 5ffb9e311b35f6ab6f76f667ca5d6e595645481b 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'rebase', 'user': 'bob'}
451 $ hg -R ../repo-Bob bundle ../step-1.hg
452 searching for changes
453 2 changesets found
454 $ hg unbundle ../step-1.hg
455 adding changesets
456 adding manifests
457 adding file changes
458 added 2 changesets with 0 changes to 2 files (+1 heads)
459 (run 'hg heads' to see heads)
460 $ hg log -G
461 o 4:77ae25d99ff0 c_B2
462 |
463 o 3:9866d64649a5 c_A2
464 |
465 @ 0:e82fb8d02bbf ROOT
466
467 $ hg log -G --hidden
468 x 6:956063ac4557 c_B1 [rewritten using amend, rebase as 4:77ae25d99ff0 by celeste (at 1970-01-01 00:00 +0000); ]
469 |
470 x 5:5b5708a437f2 c_A1 [rewritten using amend as 3:9866d64649a5 by celeste (at 1970-01-01 00:00 +0000); ]
471 |
472 | o 4:77ae25d99ff0 c_B2
473 | |
474 | o 3:9866d64649a5 c_A2
475 |/
476 | x 2:ef908e42ce65 c_B0 [rewritten using amend, rebase as 6:956063ac4557 by bob (at 1970-01-01 00:00 +0000); ]
477 | |
478 | x 1:d33b0a3a6464 c_A0 [rewritten using amend as 5:5b5708a437f2 by bob (at 1970-01-01 00:00 +0000); ]
479 |/
480 @ 0:e82fb8d02bbf ROOT
481
482 $ hg debugobsolete
483 3cf8de21cc2282186857d2266eb6b1f9cb85ecf3 77ae25d99ff07889e181126b1171b94bec8e5227 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'amend', 'user': 'celeste'}
484 5b5708a437f27665db42c5a261a539a1bcb2a8c2 9866d64649a5d9c5991fe119c7b2c33898114e10 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'amend', 'user': 'celeste'}
485 5ffb9e311b35f6ab6f76f667ca5d6e595645481b 956063ac4557828781733b2d5677a351ce856f59 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'amend', 'user': 'bob'}
486 956063ac4557828781733b2d5677a351ce856f59 3cf8de21cc2282186857d2266eb6b1f9cb85ecf3 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'rebase', 'user': 'celeste'}
487 d33b0a3a64647d79583526be8107802b1f9fedfa 5b5708a437f27665db42c5a261a539a1bcb2a8c2 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'amend', 'user': 'bob'}
488 ef908e42ce65ef57f970d799acaddde26f58a4cc 5ffb9e311b35f6ab6f76f667ca5d6e595645481b 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'rebase', 'user': 'bob'}
489
490 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now