|
1 ==================================================== |
|
2 Test push/pull from multiple source at the same time |
|
3 ==================================================== |
|
4 |
|
5 |
|
6 Setup |
|
7 ===== |
|
8 |
|
9 main repository |
|
10 --------------- |
|
11 |
|
12 $ . $RUNTESTDIR/testlib/common.sh |
|
13 $ hg init main-repo |
|
14 $ cd main-repo |
|
15 $ mkcommit A |
|
16 $ mkcommit B |
|
17 $ mkcommit C |
|
18 $ mkcommit D |
|
19 $ mkcommit E |
|
20 $ hg up 'desc(B)' |
|
21 0 files updated, 0 files merged, 3 files removed, 0 files unresolved |
|
22 $ mkcommit F |
|
23 created new head |
|
24 $ mkcommit G |
|
25 $ hg up 'desc(C)' |
|
26 1 files updated, 0 files merged, 2 files removed, 0 files unresolved |
|
27 $ mkcommit H |
|
28 created new head |
|
29 $ hg up null --quiet |
|
30 $ hg log -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G |
|
31 o H 7 |
|
32 | |
|
33 | o E 4 |
|
34 | | |
|
35 | o D 3 |
|
36 |/ |
|
37 o C 2 |
|
38 | |
|
39 | o G 6 |
|
40 | | |
|
41 | o F 5 |
|
42 |/ |
|
43 o B 1 |
|
44 | |
|
45 o A 0 |
|
46 |
|
47 $ cd .. |
|
48 |
|
49 Various other repositories |
|
50 -------------------------- |
|
51 |
|
52 $ hg clone main-repo branch-E --rev 4 -U |
|
53 adding changesets |
|
54 adding manifests |
|
55 adding file changes |
|
56 added 5 changesets with 5 changes to 5 files |
|
57 new changesets 4a2df7238c3b:a603bfb5a83e |
|
58 $ hg clone main-repo branch-G --rev 6 -U |
|
59 adding changesets |
|
60 adding manifests |
|
61 adding file changes |
|
62 added 4 changesets with 4 changes to 4 files |
|
63 new changesets 4a2df7238c3b:c521a06b234b |
|
64 $ hg clone main-repo branch-H --rev 7 -U |
|
65 adding changesets |
|
66 adding manifests |
|
67 adding file changes |
|
68 added 4 changesets with 4 changes to 4 files |
|
69 new changesets 4a2df7238c3b:40faebb2ec45 |
|
70 |
|
71 Test simple bare operation |
|
72 ========================== |
|
73 |
|
74 $ hg clone main-repo test-repo-bare --rev 0 -U |
|
75 adding changesets |
|
76 adding manifests |
|
77 adding file changes |
|
78 added 1 changesets with 1 changes to 1 files |
|
79 new changesets 4a2df7238c3b |
|
80 |
|
81 $ hg pull -R test-repo-bare ./branch-E ./branch-G ./branch-H |
|
82 pulling from ./branch-E |
|
83 searching for changes |
|
84 adding changesets |
|
85 adding manifests |
|
86 adding file changes |
|
87 added 4 changesets with 4 changes to 4 files |
|
88 new changesets 27547f69f254:a603bfb5a83e |
|
89 (run 'hg update' to get a working copy) |
|
90 pulling from ./branch-G |
|
91 searching for changes |
|
92 adding changesets |
|
93 adding manifests |
|
94 adding file changes |
|
95 added 2 changesets with 2 changes to 2 files (+1 heads) |
|
96 new changesets 2f3a4c5c1417:c521a06b234b |
|
97 (run 'hg heads' to see heads, 'hg merge' to merge) |
|
98 pulling from ./branch-H |
|
99 searching for changes |
|
100 adding changesets |
|
101 adding manifests |
|
102 adding file changes |
|
103 added 1 changesets with 1 changes to 1 files (+1 heads) |
|
104 new changesets 40faebb2ec45 |
|
105 (run 'hg heads .' to see heads, 'hg merge' to merge) |
|
106 $ hg log -R test-repo-bare -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G |
|
107 o H 7 |
|
108 | |
|
109 | o E 4 |
|
110 | | |
|
111 | o D 3 |
|
112 |/ |
|
113 o C 2 |
|
114 | |
|
115 | o G 6 |
|
116 | | |
|
117 | o F 5 |
|
118 |/ |
|
119 o B 1 |
|
120 | |
|
121 o A 0 |
|
122 |
|
123 |
|
124 Test operation with a target |
|
125 ============================ |
|
126 |
|
127 $ hg clone main-repo test-repo-rev --rev 0 -U |
|
128 adding changesets |
|
129 adding manifests |
|
130 adding file changes |
|
131 added 1 changesets with 1 changes to 1 files |
|
132 new changesets 4a2df7238c3b |
|
133 |
|
134 pulling an explicite revision |
|
135 |
|
136 $ node_b=`hg log -R main-repo --rev 'desc(B)' -T '{node}'` |
|
137 $ hg pull -R test-repo-rev ./branch-E ./branch-G ./branch-H --rev $node_b |
|
138 pulling from ./branch-E |
|
139 searching for changes |
|
140 adding changesets |
|
141 adding manifests |
|
142 adding file changes |
|
143 added 1 changesets with 1 changes to 1 files |
|
144 new changesets 27547f69f254 |
|
145 (run 'hg update' to get a working copy) |
|
146 pulling from ./branch-G |
|
147 no changes found |
|
148 pulling from ./branch-H |
|
149 no changes found |
|
150 $ hg log -R test-repo-rev -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G |
|
151 o B 1 |
|
152 | |
|
153 o A 0 |
|
154 |
|
155 |
|
156 pulling a branch head, the branch head resolve to different revision on the |
|
157 different repositories. |
|
158 |
|
159 $ hg pull -R test-repo-rev ./branch-E ./branch-G ./branch-H --rev default |
|
160 pulling from ./branch-E |
|
161 searching for changes |
|
162 adding changesets |
|
163 adding manifests |
|
164 adding file changes |
|
165 added 3 changesets with 3 changes to 3 files |
|
166 new changesets f838bfaca5c7:a603bfb5a83e |
|
167 (run 'hg update' to get a working copy) |
|
168 pulling from ./branch-G |
|
169 searching for changes |
|
170 adding changesets |
|
171 adding manifests |
|
172 adding file changes |
|
173 added 2 changesets with 2 changes to 2 files (+1 heads) |
|
174 new changesets 2f3a4c5c1417:c521a06b234b |
|
175 (run 'hg heads' to see heads, 'hg merge' to merge) |
|
176 pulling from ./branch-H |
|
177 searching for changes |
|
178 adding changesets |
|
179 adding manifests |
|
180 adding file changes |
|
181 added 1 changesets with 1 changes to 1 files (+1 heads) |
|
182 new changesets 40faebb2ec45 |
|
183 (run 'hg heads .' to see heads, 'hg merge' to merge) |
|
184 $ hg log -R test-repo-rev -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G |
|
185 o H 7 |
|
186 | |
|
187 | o E 4 |
|
188 | | |
|
189 | o D 3 |
|
190 |/ |
|
191 o C 2 |
|
192 | |
|
193 | o G 6 |
|
194 | | |
|
195 | o F 5 |
|
196 |/ |
|
197 o B 1 |
|
198 | |
|
199 o A 0 |
|
200 |
|
201 |
|
202 |
|
203 Test with --update |
|
204 ================== |
|
205 |
|
206 update without conflicts |
|
207 ------------------------ |
|
208 |
|
209 $ hg clone main-repo test-repo-update --rev 0 |
|
210 adding changesets |
|
211 adding manifests |
|
212 adding file changes |
|
213 added 1 changesets with 1 changes to 1 files |
|
214 new changesets 4a2df7238c3b |
|
215 updating to branch default |
|
216 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
217 |
|
218 We update for each pull, so the first on get into a branch independant from the |
|
219 other and stay there. This is the expected behavior. |
|
220 |
|
221 $ hg log -R test-repo-update -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G |
|
222 @ A 0 |
|
223 |
|
224 $ hg pull -R test-repo-update ./branch-E ./branch-G ./branch-H --update |
|
225 pulling from ./branch-E |
|
226 searching for changes |
|
227 adding changesets |
|
228 adding manifests |
|
229 adding file changes |
|
230 added 4 changesets with 4 changes to 4 files |
|
231 new changesets 27547f69f254:a603bfb5a83e |
|
232 4 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
233 pulling from ./branch-G |
|
234 searching for changes |
|
235 adding changesets |
|
236 adding manifests |
|
237 adding file changes |
|
238 added 2 changesets with 2 changes to 2 files (+1 heads) |
|
239 new changesets 2f3a4c5c1417:c521a06b234b |
|
240 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
241 updated to "a603bfb5a83e: E" |
|
242 1 other heads for branch "default" |
|
243 pulling from ./branch-H |
|
244 searching for changes |
|
245 adding changesets |
|
246 adding manifests |
|
247 adding file changes |
|
248 added 1 changesets with 1 changes to 1 files (+1 heads) |
|
249 new changesets 40faebb2ec45 |
|
250 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
251 updated to "a603bfb5a83e: E" |
|
252 2 other heads for branch "default" |
|
253 $ hg log -R test-repo-update -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G |
|
254 o H 7 |
|
255 | |
|
256 | @ E 4 |
|
257 | | |
|
258 | o D 3 |
|
259 |/ |
|
260 o C 2 |
|
261 | |
|
262 | o G 6 |
|
263 | | |
|
264 | o F 5 |
|
265 |/ |
|
266 o B 1 |
|
267 | |
|
268 o A 0 |
|
269 |
|
270 |
|
271 update with conflicts |
|
272 --------------------- |
|
273 |
|
274 $ hg clone main-repo test-repo-conflict --rev 0 |
|
275 adding changesets |
|
276 adding manifests |
|
277 adding file changes |
|
278 added 1 changesets with 1 changes to 1 files |
|
279 new changesets 4a2df7238c3b |
|
280 updating to branch default |
|
281 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
282 |
|
283 The update has conflict and interrupt the pull. |
|
284 |
|
285 $ echo this-will-conflict > test-repo-conflict/D |
|
286 $ hg add -R test-repo-conflict test-repo-conflict/D |
|
287 $ hg log -R test-repo-conflict -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G |
|
288 @ A 0 |
|
289 |
|
290 $ hg pull -R test-repo-conflict ./branch-E ./branch-G ./branch-H --update |
|
291 pulling from ./branch-E |
|
292 searching for changes |
|
293 adding changesets |
|
294 adding manifests |
|
295 adding file changes |
|
296 added 4 changesets with 4 changes to 4 files |
|
297 new changesets 27547f69f254:a603bfb5a83e |
|
298 merging D |
|
299 warning: conflicts while merging D! (edit, then use 'hg resolve --mark') |
|
300 3 files updated, 0 files merged, 0 files removed, 1 files unresolved |
|
301 use 'hg resolve' to retry unresolved file merges |
|
302 [1] |
|
303 $ hg -R test-repo-conflict resolve -l |
|
304 U D |
|
305 $ hg log -R test-repo-conflict -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G |
|
306 @ E 4 |
|
307 | |
|
308 o D 3 |
|
309 | |
|
310 o C 2 |
|
311 | |
|
312 o B 1 |
|
313 | |
|
314 % A 0 |
|
315 |