##// 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 Test distributed obsolescence
2 Test distributed obsolescence
3 =============================
3 =============================
4
4
5 This file test various cases where data (changeset, phase, obsmarkers) is
5 This file test various cases where data (changeset, phase, obsmarkers) is
6 added to the repository in a specific order. Usually, this order is unlikely
6 added to the repository in a specific order. Usually, this order is unlikely
7 to happen in the local case but can easily happen in the distributed case.
7 to happen in the local case but can easily happen in the distributed case.
8
8
9 $ unset HGUSER
9 $ unset HGUSER
10 $ unset EMAIL
10 $ unset EMAIL
11 $ . $TESTDIR/testlib/obsmarker-common.sh
11 $ . $TESTDIR/testlib/obsmarker-common.sh
12 $ cat >> $HGRCPATH << EOF
12 $ cat >> $HGRCPATH << EOF
13 > [extensions]
14 > rebase =
13 > [experimental]
15 > [experimental]
14 > evolution = all
16 > evolution = all
15 > [phases]
17 > [phases]
16 > publish = False
18 > publish = False
17 > [templates]
19 > [templates]
18 > obsfatesuccessors = "{if(successors, " as ")}{join(successors, ", ")}"
20 > obsfatesuccessors = "{if(successors, " as ")}{join(successors, ", ")}"
19 > obsfateverb = "{obsfateverb(successors)}"
21 > obsfateverb = "{obsfateverb(successors)}"
20 > obsfateoperations = "{if(obsfateoperations(markers), " using {join(obsfateoperations(markers), ", ")}")}"
22 > obsfateoperations = "{if(obsfateoperations(markers), " using {join(obsfateoperations(markers), ", ")}")}"
21 > obsfateusers = "{if(obsfateusers(markers), " by {join(obsfateusers(markers), ", ")}")}"
23 > obsfateusers = "{if(obsfateusers(markers), " by {join(obsfateusers(markers), ", ")}")}"
22 > 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})")}")}"
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 > obsfate = "{obsfateverb}{obsfateoperations}{obsfatesuccessors}{obsfateusers}{obsfatedate}; "
25 > obsfate = "{obsfateverb}{obsfateoperations}{obsfatesuccessors}{obsfateusers}{obsfatedate}; "
24 > [ui]
26 > [ui]
25 > logtemplate= {rev}:{node|short} {desc} {if(succsandmarkers, "[{succsandmarkers % "{obsfate}"}]")}\n
27 > logtemplate= {rev}:{node|short} {desc} {if(succsandmarkers, "[{succsandmarkers % "{obsfate}"}]")}\n
26 > EOF
28 > EOF
27
29
28 Check distributed chain building
30 Check distributed chain building
29 ================================
31 ================================
30
32
31 Test case where a changeset is marked as a successor of another local
33 Test case where a changeset is marked as a successor of another local
32 changeset while the successor has already been obsoleted remotely.
34 changeset while the successor has already been obsoleted remotely.
33
35
34 The chain of evolution should seamlessly connect and all but the new version
36 The chain of evolution should seamlessly connect and all but the new version
35 (created remotely) should be seen as obsolete.
37 (created remotely) should be seen as obsolete.
36
38
37 Initial setup
39 Initial setup
38
40
39 $ mkdir distributed-chain-building
41 $ mkdir distributed-chain-building
40 $ cd distributed-chain-building
42 $ cd distributed-chain-building
41 $ hg init server
43 $ hg init server
42 $ cd server
44 $ cd server
43 $ cat << EOF >> .hg/hgrc
45 $ cat << EOF >> .hg/hgrc
44 > [ui]
46 > [ui]
45 > username = server
47 > username = server
46 > EOF
48 > EOF
47 $ mkcommit ROOT
49 $ mkcommit ROOT
48 $ mkcommit c_A0
50 $ mkcommit c_A0
49 $ hg up 'desc("ROOT")'
51 $ hg up 'desc("ROOT")'
50 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
52 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
51 $ mkcommit c_A1
53 $ mkcommit c_A1
52 created new head
54 created new head
53 $ hg up 'desc("ROOT")'
55 $ hg up 'desc("ROOT")'
54 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
56 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
55 $ mkcommit c_B0
57 $ mkcommit c_B0
56 created new head
58 created new head
57 $ hg debugobsolete `getid 'desc("c_A0")'` `getid 'desc("c_A1")'`
59 $ hg debugobsolete `getid 'desc("c_A0")'` `getid 'desc("c_A1")'`
58 obsoleted 1 changesets
60 obsoleted 1 changesets
59 $ hg log -G --hidden
61 $ hg log -G --hidden
60 @ 3:e5d7dda7cd28 c_B0
62 @ 3:e5d7dda7cd28 c_B0
61 |
63 |
62 | o 2:7f6b0a6f5c25 c_A1
64 | o 2:7f6b0a6f5c25 c_A1
63 |/
65 |/
64 | x 1:e1b46f0f979f c_A0 [rewritten as 2:7f6b0a6f5c25 by server (at 1970-01-01 00:00 +0000); ]
66 | x 1:e1b46f0f979f c_A0 [rewritten as 2:7f6b0a6f5c25 by server (at 1970-01-01 00:00 +0000); ]
65 |/
67 |/
66 o 0:e82fb8d02bbf ROOT
68 o 0:e82fb8d02bbf ROOT
67
69
68 $ hg debugobsolete
70 $ hg debugobsolete
69 e1b46f0f979f52748347ff8729c59f2ef56e6fe2 7f6b0a6f5c25345a83870963efd827c1798a5959 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'server'}
71 e1b46f0f979f52748347ff8729c59f2ef56e6fe2 7f6b0a6f5c25345a83870963efd827c1798a5959 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'server'}
70 $ cd ..
72 $ cd ..
71
73
72 duplicate the repo for the client:
74 duplicate the repo for the client:
73
75
74 $ cp -R server client
76 $ cp -R server client
75 $ cat << EOF >> client/.hg/hgrc
77 $ cat << EOF >> client/.hg/hgrc
76 > [paths]
78 > [paths]
77 > default = ../server/
79 > default = ../server/
78 > [ui]
80 > [ui]
79 > username = client
81 > username = client
80 > EOF
82 > EOF
81
83
82 server side: create new revision on the server (obsoleting another one)
84 server side: create new revision on the server (obsoleting another one)
83
85
84 $ cd server
86 $ cd server
85 $ hg up 'desc("ROOT")'
87 $ hg up 'desc("ROOT")'
86 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
88 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
87 $ mkcommit c_B1
89 $ mkcommit c_B1
88 created new head
90 created new head
89 $ hg debugobsolete `getid 'desc("c_B0")'` `getid 'desc("c_B1")'`
91 $ hg debugobsolete `getid 'desc("c_B0")'` `getid 'desc("c_B1")'`
90 obsoleted 1 changesets
92 obsoleted 1 changesets
91 $ hg log -G
93 $ hg log -G
92 @ 4:391a2bf12b1b c_B1
94 @ 4:391a2bf12b1b c_B1
93 |
95 |
94 | o 2:7f6b0a6f5c25 c_A1
96 | o 2:7f6b0a6f5c25 c_A1
95 |/
97 |/
96 o 0:e82fb8d02bbf ROOT
98 o 0:e82fb8d02bbf ROOT
97
99
98 $ hg log -G --hidden
100 $ hg log -G --hidden
99 @ 4:391a2bf12b1b c_B1
101 @ 4:391a2bf12b1b c_B1
100 |
102 |
101 | x 3:e5d7dda7cd28 c_B0 [rewritten as 4:391a2bf12b1b by server (at 1970-01-01 00:00 +0000); ]
103 | x 3:e5d7dda7cd28 c_B0 [rewritten as 4:391a2bf12b1b by server (at 1970-01-01 00:00 +0000); ]
102 |/
104 |/
103 | o 2:7f6b0a6f5c25 c_A1
105 | o 2:7f6b0a6f5c25 c_A1
104 |/
106 |/
105 | x 1:e1b46f0f979f c_A0 [rewritten as 2:7f6b0a6f5c25 by server (at 1970-01-01 00:00 +0000); ]
107 | x 1:e1b46f0f979f c_A0 [rewritten as 2:7f6b0a6f5c25 by server (at 1970-01-01 00:00 +0000); ]
106 |/
108 |/
107 o 0:e82fb8d02bbf ROOT
109 o 0:e82fb8d02bbf ROOT
108
110
109 $ hg debugobsolete
111 $ hg debugobsolete
110 e1b46f0f979f52748347ff8729c59f2ef56e6fe2 7f6b0a6f5c25345a83870963efd827c1798a5959 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'server'}
112 e1b46f0f979f52748347ff8729c59f2ef56e6fe2 7f6b0a6f5c25345a83870963efd827c1798a5959 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'server'}
111 e5d7dda7cd28e6b3f79437e5b8122a38ece0255c 391a2bf12b1b8b05a72400ae36b26d50a091dc22 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'server'}
113 e5d7dda7cd28e6b3f79437e5b8122a38ece0255c 391a2bf12b1b8b05a72400ae36b26d50a091dc22 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'server'}
112 $ cd ..
114 $ cd ..
113
115
114 client side: create a marker between two common changesets
116 client side: create a marker between two common changesets
115 (client is not aware of the server activity yet)
117 (client is not aware of the server activity yet)
116
118
117 $ cd client
119 $ cd client
118 $ hg debugobsolete `getid 'desc("c_A1")'` `getid 'desc("c_B0")'`
120 $ hg debugobsolete `getid 'desc("c_A1")'` `getid 'desc("c_B0")'`
119 obsoleted 1 changesets
121 obsoleted 1 changesets
120 $ hg log -G
122 $ hg log -G
121 @ 3:e5d7dda7cd28 c_B0
123 @ 3:e5d7dda7cd28 c_B0
122 |
124 |
123 o 0:e82fb8d02bbf ROOT
125 o 0:e82fb8d02bbf ROOT
124
126
125 $ hg log -G --hidden
127 $ hg log -G --hidden
126 @ 3:e5d7dda7cd28 c_B0
128 @ 3:e5d7dda7cd28 c_B0
127 |
129 |
128 | x 2:7f6b0a6f5c25 c_A1 [rewritten as 3:e5d7dda7cd28 by client (at 1970-01-01 00:00 +0000); ]
130 | x 2:7f6b0a6f5c25 c_A1 [rewritten as 3:e5d7dda7cd28 by client (at 1970-01-01 00:00 +0000); ]
129 |/
131 |/
130 | x 1:e1b46f0f979f c_A0 [rewritten as 2:7f6b0a6f5c25 by server (at 1970-01-01 00:00 +0000); ]
132 | x 1:e1b46f0f979f c_A0 [rewritten as 2:7f6b0a6f5c25 by server (at 1970-01-01 00:00 +0000); ]
131 |/
133 |/
132 o 0:e82fb8d02bbf ROOT
134 o 0:e82fb8d02bbf ROOT
133
135
134 $ hg debugobsolete
136 $ hg debugobsolete
135 e1b46f0f979f52748347ff8729c59f2ef56e6fe2 7f6b0a6f5c25345a83870963efd827c1798a5959 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'server'}
137 e1b46f0f979f52748347ff8729c59f2ef56e6fe2 7f6b0a6f5c25345a83870963efd827c1798a5959 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'server'}
136 7f6b0a6f5c25345a83870963efd827c1798a5959 e5d7dda7cd28e6b3f79437e5b8122a38ece0255c 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'client'}
138 7f6b0a6f5c25345a83870963efd827c1798a5959 e5d7dda7cd28e6b3f79437e5b8122a38ece0255c 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'client'}
137
139
138 client side: pull from the server
140 client side: pull from the server
139 (the new successors should take over)
141 (the new successors should take over)
140
142
141 $ hg up 'desc("ROOT")'
143 $ hg up 'desc("ROOT")'
142 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
144 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
143 $ hg pull
145 $ hg pull
144 pulling from $TESTTMP/distributed-chain-building/server (glob)
146 pulling from $TESTTMP/distributed-chain-building/server (glob)
145 searching for changes
147 searching for changes
146 adding changesets
148 adding changesets
147 adding manifests
149 adding manifests
148 adding file changes
150 adding file changes
149 added 1 changesets with 1 changes to 1 files (+1 heads)
151 added 1 changesets with 1 changes to 1 files (+1 heads)
150 1 new obsolescence markers
152 1 new obsolescence markers
151 obsoleted 1 changesets
153 obsoleted 1 changesets
152 (run 'hg heads' to see heads)
154 (run 'hg heads' to see heads)
153 $ hg log -G
155 $ hg log -G
154 o 4:391a2bf12b1b c_B1
156 o 4:391a2bf12b1b c_B1
155 |
157 |
156 @ 0:e82fb8d02bbf ROOT
158 @ 0:e82fb8d02bbf ROOT
157
159
158 $ hg log -G --hidden
160 $ hg log -G --hidden
159 o 4:391a2bf12b1b c_B1
161 o 4:391a2bf12b1b c_B1
160 |
162 |
161 | x 3:e5d7dda7cd28 c_B0 [rewritten as 4:391a2bf12b1b by server (at 1970-01-01 00:00 +0000); ]
163 | x 3:e5d7dda7cd28 c_B0 [rewritten as 4:391a2bf12b1b by server (at 1970-01-01 00:00 +0000); ]
162 |/
164 |/
163 | x 2:7f6b0a6f5c25 c_A1 [rewritten as 3:e5d7dda7cd28 by client (at 1970-01-01 00:00 +0000); ]
165 | x 2:7f6b0a6f5c25 c_A1 [rewritten as 3:e5d7dda7cd28 by client (at 1970-01-01 00:00 +0000); ]
164 |/
166 |/
165 | x 1:e1b46f0f979f c_A0 [rewritten as 2:7f6b0a6f5c25 by server (at 1970-01-01 00:00 +0000); ]
167 | x 1:e1b46f0f979f c_A0 [rewritten as 2:7f6b0a6f5c25 by server (at 1970-01-01 00:00 +0000); ]
166 |/
168 |/
167 @ 0:e82fb8d02bbf ROOT
169 @ 0:e82fb8d02bbf ROOT
168
170
169 $ hg debugobsolete
171 $ hg debugobsolete
170 e1b46f0f979f52748347ff8729c59f2ef56e6fe2 7f6b0a6f5c25345a83870963efd827c1798a5959 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'server'}
172 e1b46f0f979f52748347ff8729c59f2ef56e6fe2 7f6b0a6f5c25345a83870963efd827c1798a5959 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'server'}
171 7f6b0a6f5c25345a83870963efd827c1798a5959 e5d7dda7cd28e6b3f79437e5b8122a38ece0255c 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'client'}
173 7f6b0a6f5c25345a83870963efd827c1798a5959 e5d7dda7cd28e6b3f79437e5b8122a38ece0255c 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'client'}
172 e5d7dda7cd28e6b3f79437e5b8122a38ece0255c 391a2bf12b1b8b05a72400ae36b26d50a091dc22 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'server'}
174 e5d7dda7cd28e6b3f79437e5b8122a38ece0255c 391a2bf12b1b8b05a72400ae36b26d50a091dc22 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'server'}
173
175
174 server side: receive client push
176 server side: receive client push
175 (the other way around, pushing to the server, the obsolete changesets stay
177 (the other way around, pushing to the server, the obsolete changesets stay
176 obsolete on the server side but the marker is sent out.)
178 obsolete on the server side but the marker is sent out.)
177
179
178 $ hg rollback
180 $ hg rollback
179 repository tip rolled back to revision 3 (undo pull)
181 repository tip rolled back to revision 3 (undo pull)
180 $ hg push -f
182 $ hg push -f
181 pushing to $TESTTMP/distributed-chain-building/server (glob)
183 pushing to $TESTTMP/distributed-chain-building/server (glob)
182 searching for changes
184 searching for changes
183 adding changesets
185 adding changesets
184 adding manifests
186 adding manifests
185 adding file changes
187 adding file changes
186 added 0 changesets with 0 changes to 1 files
188 added 0 changesets with 0 changes to 1 files
187 1 new obsolescence markers
189 1 new obsolescence markers
188 obsoleted 1 changesets
190 obsoleted 1 changesets
189 $ hg -R ../server/ log -G
191 $ hg -R ../server/ log -G
190 @ 4:391a2bf12b1b c_B1
192 @ 4:391a2bf12b1b c_B1
191 |
193 |
192 o 0:e82fb8d02bbf ROOT
194 o 0:e82fb8d02bbf ROOT
193
195
194 $ hg -R ../server/ log -G --hidden
196 $ hg -R ../server/ log -G --hidden
195 @ 4:391a2bf12b1b c_B1
197 @ 4:391a2bf12b1b c_B1
196 |
198 |
197 | x 3:e5d7dda7cd28 c_B0 [rewritten as 4:391a2bf12b1b by server (at 1970-01-01 00:00 +0000); ]
199 | x 3:e5d7dda7cd28 c_B0 [rewritten as 4:391a2bf12b1b by server (at 1970-01-01 00:00 +0000); ]
198 |/
200 |/
199 | x 2:7f6b0a6f5c25 c_A1 [rewritten as 3:e5d7dda7cd28 by client (at 1970-01-01 00:00 +0000); ]
201 | x 2:7f6b0a6f5c25 c_A1 [rewritten as 3:e5d7dda7cd28 by client (at 1970-01-01 00:00 +0000); ]
200 |/
202 |/
201 | x 1:e1b46f0f979f c_A0 [rewritten as 2:7f6b0a6f5c25 by server (at 1970-01-01 00:00 +0000); ]
203 | x 1:e1b46f0f979f c_A0 [rewritten as 2:7f6b0a6f5c25 by server (at 1970-01-01 00:00 +0000); ]
202 |/
204 |/
203 o 0:e82fb8d02bbf ROOT
205 o 0:e82fb8d02bbf ROOT
204
206
205 $ hg debugobsolete
207 $ hg debugobsolete
206 e1b46f0f979f52748347ff8729c59f2ef56e6fe2 7f6b0a6f5c25345a83870963efd827c1798a5959 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'server'}
208 e1b46f0f979f52748347ff8729c59f2ef56e6fe2 7f6b0a6f5c25345a83870963efd827c1798a5959 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'server'}
207 7f6b0a6f5c25345a83870963efd827c1798a5959 e5d7dda7cd28e6b3f79437e5b8122a38ece0255c 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'client'}
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