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