##// END OF EJS Templates
test-treemanifest: cleanup the test to more easily show server side error...
marmoute -
r51516:99dfe806 default
parent child Browse files
Show More
@@ -1,844 +1,855 b''
1 Set up repo
1 Set up repo
2
2
3 $ hg --config experimental.treemanifest=True init repo
3 $ hg --config experimental.treemanifest=True init repo
4 $ cd repo
4 $ cd repo
5
5
6 Requirements get set on init
6 Requirements get set on init
7
7
8 $ hg debugrequires | grep treemanifest
8 $ hg debugrequires | grep treemanifest
9 treemanifest
9 treemanifest
10
10
11 Without directories, looks like any other repo
11 Without directories, looks like any other repo
12
12
13 $ echo 0 > a
13 $ echo 0 > a
14 $ echo 0 > b
14 $ echo 0 > b
15 $ hg ci -Aqm initial
15 $ hg ci -Aqm initial
16 $ hg debugdata -m 0
16 $ hg debugdata -m 0
17 a\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (esc)
17 a\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (esc)
18 b\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (esc)
18 b\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (esc)
19
19
20 Submanifest is stored in separate revlog
20 Submanifest is stored in separate revlog
21
21
22 $ mkdir dir1
22 $ mkdir dir1
23 $ echo 1 > dir1/a
23 $ echo 1 > dir1/a
24 $ echo 1 > dir1/b
24 $ echo 1 > dir1/b
25 $ echo 1 > e
25 $ echo 1 > e
26 $ hg ci -Aqm 'add dir1'
26 $ hg ci -Aqm 'add dir1'
27 $ hg debugdata -m 1
27 $ hg debugdata -m 1
28 a\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (esc)
28 a\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (esc)
29 b\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (esc)
29 b\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (esc)
30 dir1\x008b3ffd73f901e83304c83d33132c8e774ceac44et (esc)
30 dir1\x008b3ffd73f901e83304c83d33132c8e774ceac44et (esc)
31 e\x00b8e02f6433738021a065f94175c7cd23db5f05be (esc)
31 e\x00b8e02f6433738021a065f94175c7cd23db5f05be (esc)
32 $ hg debugdata --dir dir1 0
32 $ hg debugdata --dir dir1 0
33 a\x00b8e02f6433738021a065f94175c7cd23db5f05be (esc)
33 a\x00b8e02f6433738021a065f94175c7cd23db5f05be (esc)
34 b\x00b8e02f6433738021a065f94175c7cd23db5f05be (esc)
34 b\x00b8e02f6433738021a065f94175c7cd23db5f05be (esc)
35
35
36 Can add nested directories
36 Can add nested directories
37
37
38 $ mkdir dir1/dir1
38 $ mkdir dir1/dir1
39 $ echo 2 > dir1/dir1/a
39 $ echo 2 > dir1/dir1/a
40 $ echo 2 > dir1/dir1/b
40 $ echo 2 > dir1/dir1/b
41 $ mkdir dir1/dir2
41 $ mkdir dir1/dir2
42 $ echo 2 > dir1/dir2/a
42 $ echo 2 > dir1/dir2/a
43 $ echo 2 > dir1/dir2/b
43 $ echo 2 > dir1/dir2/b
44 $ hg ci -Aqm 'add dir1/dir1'
44 $ hg ci -Aqm 'add dir1/dir1'
45 $ hg files -r .
45 $ hg files -r .
46 a
46 a
47 b
47 b
48 dir1/a
48 dir1/a
49 dir1/b
49 dir1/b
50 dir1/dir1/a
50 dir1/dir1/a
51 dir1/dir1/b
51 dir1/dir1/b
52 dir1/dir2/a
52 dir1/dir2/a
53 dir1/dir2/b
53 dir1/dir2/b
54 e
54 e
55
55
56 The manifest command works
56 The manifest command works
57
57
58 $ hg manifest
58 $ hg manifest
59 a
59 a
60 b
60 b
61 dir1/a
61 dir1/a
62 dir1/b
62 dir1/b
63 dir1/dir1/a
63 dir1/dir1/a
64 dir1/dir1/b
64 dir1/dir1/b
65 dir1/dir2/a
65 dir1/dir2/a
66 dir1/dir2/b
66 dir1/dir2/b
67 e
67 e
68
68
69 Revision is not created for unchanged directory
69 Revision is not created for unchanged directory
70
70
71 $ mkdir dir2
71 $ mkdir dir2
72 $ echo 3 > dir2/a
72 $ echo 3 > dir2/a
73 $ hg add dir2
73 $ hg add dir2
74 adding dir2/a
74 adding dir2/a
75 $ hg debugindex --dir dir1 > before
75 $ hg debugindex --dir dir1 > before
76 $ hg ci -qm 'add dir2'
76 $ hg ci -qm 'add dir2'
77 $ hg debugindex --dir dir1 > after
77 $ hg debugindex --dir dir1 > after
78 $ diff before after
78 $ diff before after
79 $ rm before after
79 $ rm before after
80
80
81 Removing directory does not create an revlog entry
81 Removing directory does not create an revlog entry
82
82
83 $ hg rm dir1/dir1
83 $ hg rm dir1/dir1
84 removing dir1/dir1/a
84 removing dir1/dir1/a
85 removing dir1/dir1/b
85 removing dir1/dir1/b
86 $ hg debugindex --dir dir1/dir1 > before
86 $ hg debugindex --dir dir1/dir1 > before
87 $ hg ci -qm 'remove dir1/dir1'
87 $ hg ci -qm 'remove dir1/dir1'
88 $ hg debugindex --dir dir1/dir1 > after
88 $ hg debugindex --dir dir1/dir1 > after
89 $ diff before after
89 $ diff before after
90 $ rm before after
90 $ rm before after
91
91
92 Check that hg files (calls treemanifest.walk()) works
92 Check that hg files (calls treemanifest.walk()) works
93 without loading all directory revlogs
93 without loading all directory revlogs
94
94
95 $ hg co 'desc("add dir2")'
95 $ hg co 'desc("add dir2")'
96 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
96 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
97 $ mv .hg/store/meta/dir2 .hg/store/meta/dir2-backup
97 $ mv .hg/store/meta/dir2 .hg/store/meta/dir2-backup
98 $ hg files -r . dir1
98 $ hg files -r . dir1
99 dir1/a
99 dir1/a
100 dir1/b
100 dir1/b
101 dir1/dir1/a
101 dir1/dir1/a
102 dir1/dir1/b
102 dir1/dir1/b
103 dir1/dir2/a
103 dir1/dir2/a
104 dir1/dir2/b
104 dir1/dir2/b
105
105
106 Check that status between revisions works (calls treemanifest.matches())
106 Check that status between revisions works (calls treemanifest.matches())
107 without loading all directory revlogs
107 without loading all directory revlogs
108
108
109 $ hg status --rev 'desc("add dir1")' --rev . dir1
109 $ hg status --rev 'desc("add dir1")' --rev . dir1
110 A dir1/dir1/a
110 A dir1/dir1/a
111 A dir1/dir1/b
111 A dir1/dir1/b
112 A dir1/dir2/a
112 A dir1/dir2/a
113 A dir1/dir2/b
113 A dir1/dir2/b
114 $ mv .hg/store/meta/dir2-backup .hg/store/meta/dir2
114 $ mv .hg/store/meta/dir2-backup .hg/store/meta/dir2
115
115
116 Merge creates 2-parent revision of directory revlog
116 Merge creates 2-parent revision of directory revlog
117
117
118 $ echo 5 > dir1/a
118 $ echo 5 > dir1/a
119 $ hg ci -Aqm 'modify dir1/a'
119 $ hg ci -Aqm 'modify dir1/a'
120 $ hg co '.^'
120 $ hg co '.^'
121 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
121 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
122 $ echo 6 > dir1/b
122 $ echo 6 > dir1/b
123 $ hg ci -Aqm 'modify dir1/b'
123 $ hg ci -Aqm 'modify dir1/b'
124 $ hg merge 'desc("modify dir1/a")'
124 $ hg merge 'desc("modify dir1/a")'
125 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
125 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
126 (branch merge, don't forget to commit)
126 (branch merge, don't forget to commit)
127 $ hg ci -m 'conflict-free merge involving dir1/'
127 $ hg ci -m 'conflict-free merge involving dir1/'
128 $ cat dir1/a
128 $ cat dir1/a
129 5
129 5
130 $ cat dir1/b
130 $ cat dir1/b
131 6
131 6
132 $ hg debugindex --dir dir1
132 $ hg debugindex --dir dir1
133 rev linkrev nodeid p1-nodeid p2-nodeid
133 rev linkrev nodeid p1-nodeid p2-nodeid
134 0 1 8b3ffd73f901 000000000000 000000000000
134 0 1 8b3ffd73f901 000000000000 000000000000
135 1 2 68e9d057c5a8 8b3ffd73f901 000000000000
135 1 2 68e9d057c5a8 8b3ffd73f901 000000000000
136 2 4 4698198d2624 68e9d057c5a8 000000000000
136 2 4 4698198d2624 68e9d057c5a8 000000000000
137 3 5 44844058ccce 68e9d057c5a8 000000000000
137 3 5 44844058ccce 68e9d057c5a8 000000000000
138 4 6 bf3d9b744927 68e9d057c5a8 000000000000
138 4 6 bf3d9b744927 68e9d057c5a8 000000000000
139 5 7 dde7c0af2a03 bf3d9b744927 44844058ccce
139 5 7 dde7c0af2a03 bf3d9b744927 44844058ccce
140
140
141 Merge keeping directory from parent 1 does not create revlog entry. (Note that
141 Merge keeping directory from parent 1 does not create revlog entry. (Note that
142 dir1's manifest does change, but only because dir1/a's filelog changes.)
142 dir1's manifest does change, but only because dir1/a's filelog changes.)
143
143
144 $ hg co 'desc("add dir2")'
144 $ hg co 'desc("add dir2")'
145 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
145 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
146 $ echo 8 > dir2/a
146 $ echo 8 > dir2/a
147 $ hg ci -m 'modify dir2/a'
147 $ hg ci -m 'modify dir2/a'
148 created new head
148 created new head
149
149
150 $ hg debugindex --dir dir2 > before
150 $ hg debugindex --dir dir2 > before
151 $ hg merge 'desc("modify dir1/a")'
151 $ hg merge 'desc("modify dir1/a")'
152 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
152 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
153 (branch merge, don't forget to commit)
153 (branch merge, don't forget to commit)
154 $ hg revert -r 'desc("modify dir2/a")' .
154 $ hg revert -r 'desc("modify dir2/a")' .
155 reverting dir1/a
155 reverting dir1/a
156 $ hg ci -m 'merge, keeping parent 1'
156 $ hg ci -m 'merge, keeping parent 1'
157 $ hg debugindex --dir dir2 > after
157 $ hg debugindex --dir dir2 > after
158 $ diff before after
158 $ diff before after
159 $ rm before after
159 $ rm before after
160
160
161 Merge keeping directory from parent 2 does not create revlog entry. (Note that
161 Merge keeping directory from parent 2 does not create revlog entry. (Note that
162 dir2's manifest does change, but only because dir2/a's filelog changes.)
162 dir2's manifest does change, but only because dir2/a's filelog changes.)
163
163
164 $ hg co 'desc("modify dir2/a")'
164 $ hg co 'desc("modify dir2/a")'
165 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
165 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
166 $ hg debugindex --dir dir1 > before
166 $ hg debugindex --dir dir1 > before
167 $ hg merge 'desc("modify dir1/a")'
167 $ hg merge 'desc("modify dir1/a")'
168 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
168 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
169 (branch merge, don't forget to commit)
169 (branch merge, don't forget to commit)
170 $ hg revert -r 'desc("modify dir1/a")' .
170 $ hg revert -r 'desc("modify dir1/a")' .
171 reverting dir2/a
171 reverting dir2/a
172 $ hg ci -m 'merge, keeping parent 2'
172 $ hg ci -m 'merge, keeping parent 2'
173 created new head
173 created new head
174 $ hg debugindex --dir dir1 > after
174 $ hg debugindex --dir dir1 > after
175 $ diff before after
175 $ diff before after
176 $ rm before after
176 $ rm before after
177
177
178 Create flat source repo for tests with mixed flat/tree manifests
178 Create flat source repo for tests with mixed flat/tree manifests
179
179
180 $ cd ..
180 $ cd ..
181 $ hg init repo-flat
181 $ hg init repo-flat
182 $ cd repo-flat
182 $ cd repo-flat
183
183
184 Create a few commits with flat manifest
184 Create a few commits with flat manifest
185
185
186 $ echo 0 > a
186 $ echo 0 > a
187 $ echo 0 > b
187 $ echo 0 > b
188 $ echo 0 > e
188 $ echo 0 > e
189 $ for d in dir1 dir1/dir1 dir1/dir2 dir2
189 $ for d in dir1 dir1/dir1 dir1/dir2 dir2
190 > do
190 > do
191 > mkdir $d
191 > mkdir $d
192 > echo 0 > $d/a
192 > echo 0 > $d/a
193 > echo 0 > $d/b
193 > echo 0 > $d/b
194 > done
194 > done
195 $ hg ci -Aqm initial
195 $ hg ci -Aqm initial
196
196
197 $ echo 1 > a
197 $ echo 1 > a
198 $ echo 1 > dir1/a
198 $ echo 1 > dir1/a
199 $ echo 1 > dir1/dir1/a
199 $ echo 1 > dir1/dir1/a
200 $ hg ci -Aqm 'modify on branch 1'
200 $ hg ci -Aqm 'modify on branch 1'
201
201
202 $ hg co 0
202 $ hg co 0
203 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
203 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
204 $ echo 2 > b
204 $ echo 2 > b
205 $ echo 2 > dir1/b
205 $ echo 2 > dir1/b
206 $ echo 2 > dir1/dir1/b
206 $ echo 2 > dir1/dir1/b
207 $ hg ci -Aqm 'modify on branch 2'
207 $ hg ci -Aqm 'modify on branch 2'
208
208
209 $ hg merge 1
209 $ hg merge 1
210 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
210 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
211 (branch merge, don't forget to commit)
211 (branch merge, don't forget to commit)
212 $ hg ci -m 'merge of flat manifests to new flat manifest'
212 $ hg ci -m 'merge of flat manifests to new flat manifest'
213
213
214 $ hg serve -p $HGPORT -d --pid-file=hg.pid --errorlog=errors.log
214 $ cd ..
215 $ cat hg.pid >> $DAEMON_PIDS
215 $ hg -R repo-flat serve -p $HGPORT -d \
216 > --pid-file=port-0-hg.pid \
217 > --errorlog=port-0-errors.log
218 $ cat port-0-hg.pid >> $DAEMON_PIDS
216
219
217 Create clone with tree manifests enabled
220 Create clone with tree manifests enabled
218
221
219 $ cd ..
220 $ hg clone --config experimental.treemanifest=1 \
222 $ hg clone --config experimental.treemanifest=1 \
221 > http://localhost:$HGPORT repo-mixed -r 1
223 > http://localhost:$HGPORT repo-mixed -r 1
222 adding changesets
224 adding changesets
223 adding manifests
225 adding manifests
224 adding file changes
226 adding file changes
225 added 2 changesets with 14 changes to 11 files
227 added 2 changesets with 14 changes to 11 files
226 new changesets 5b02a3e8db7e:581ef6037d8b
228 new changesets 5b02a3e8db7e:581ef6037d8b
227 updating to branch default
229 updating to branch default
228 11 files updated, 0 files merged, 0 files removed, 0 files unresolved
230 11 files updated, 0 files merged, 0 files removed, 0 files unresolved
231 $ cat port-0-errors.log
229 $ cd repo-mixed
232 $ cd repo-mixed
230 $ test -d .hg/store/meta
233 $ test -d .hg/store/meta
231 [1]
234 [1]
232 $ hg debugrequires | grep treemanifest
235 $ hg debugrequires | grep treemanifest
233 treemanifest
236 treemanifest
234
237
235 Should be possible to push updates from flat to tree manifest repo
238 Should be possible to push updates from flat to tree manifest repo
236
239
237 $ hg -R ../repo-flat push ssh://user@dummy/repo-mixed
240 $ hg -R ../repo-flat push ssh://user@dummy/repo-mixed
238 pushing to ssh://user@dummy/repo-mixed
241 pushing to ssh://user@dummy/repo-mixed
239 searching for changes
242 searching for changes
240 remote: adding changesets
243 remote: adding changesets
241 remote: adding manifests
244 remote: adding manifests
242 remote: adding file changes
245 remote: adding file changes
243 remote: added 2 changesets with 3 changes to 3 files
246 remote: added 2 changesets with 3 changes to 3 files
244
247
245 Commit should store revlog per directory
248 Commit should store revlog per directory
246
249
247 $ hg co 1
250 $ hg co 1
248 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
251 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
249 $ echo 3 > a
252 $ echo 3 > a
250 $ echo 3 > dir1/a
253 $ echo 3 > dir1/a
251 $ echo 3 > dir1/dir1/a
254 $ echo 3 > dir1/dir1/a
252 $ hg ci -m 'first tree'
255 $ hg ci -m 'first tree'
253 created new head
256 created new head
254 $ find .hg/store/meta | sort
257 $ find .hg/store/meta | sort
255 .hg/store/meta
258 .hg/store/meta
256 .hg/store/meta/dir1
259 .hg/store/meta/dir1
257 .hg/store/meta/dir1/00manifest.i
260 .hg/store/meta/dir1/00manifest.i
258 .hg/store/meta/dir1/dir1
261 .hg/store/meta/dir1/dir1
259 .hg/store/meta/dir1/dir1/00manifest.i
262 .hg/store/meta/dir1/dir1/00manifest.i
260 .hg/store/meta/dir1/dir2
263 .hg/store/meta/dir1/dir2
261 .hg/store/meta/dir1/dir2/00manifest.i
264 .hg/store/meta/dir1/dir2/00manifest.i
262 .hg/store/meta/dir2
265 .hg/store/meta/dir2
263 .hg/store/meta/dir2/00manifest.i
266 .hg/store/meta/dir2/00manifest.i
264
267
265 Merge of two trees
268 Merge of two trees
266
269
267 $ hg co 2
270 $ hg co 2
268 6 files updated, 0 files merged, 0 files removed, 0 files unresolved
271 6 files updated, 0 files merged, 0 files removed, 0 files unresolved
269 $ hg merge 1
272 $ hg merge 1
270 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
273 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
271 (branch merge, don't forget to commit)
274 (branch merge, don't forget to commit)
272 $ hg ci -m 'merge of flat manifests to new tree manifest'
275 $ hg ci -m 'merge of flat manifests to new tree manifest'
273 created new head
276 created new head
274 $ hg diff -r 3
277 $ hg diff -r 3
275
278
276 Parent of tree root manifest should be flat manifest, and two for merge
279 Parent of tree root manifest should be flat manifest, and two for merge
277
280
278 $ hg debugindex -m
281 $ hg debugindex -m
279 rev linkrev nodeid p1-nodeid p2-nodeid
282 rev linkrev nodeid p1-nodeid p2-nodeid
280 0 0 40536115ed9e 000000000000 000000000000
283 0 0 40536115ed9e 000000000000 000000000000
281 1 1 f3376063c255 40536115ed9e 000000000000
284 1 1 f3376063c255 40536115ed9e 000000000000
282 2 2 5d9b9da231a2 40536115ed9e 000000000000
285 2 2 5d9b9da231a2 40536115ed9e 000000000000
283 3 3 d17d663cbd8a 5d9b9da231a2 f3376063c255
286 3 3 d17d663cbd8a 5d9b9da231a2 f3376063c255
284 4 4 51e32a8c60ee f3376063c255 000000000000
287 4 4 51e32a8c60ee f3376063c255 000000000000
285 5 5 cc5baa78b230 5d9b9da231a2 f3376063c255
288 5 5 cc5baa78b230 5d9b9da231a2 f3376063c255
286
289
287
290
288 Status across flat/tree boundary should work
291 Status across flat/tree boundary should work
289
292
290 $ hg status --rev '.^' --rev .
293 $ hg status --rev '.^' --rev .
291 M a
294 M a
292 M dir1/a
295 M dir1/a
293 M dir1/dir1/a
296 M dir1/dir1/a
294
297
295
298
296 Turning off treemanifest config has no effect
299 Turning off treemanifest config has no effect
297
300
298 $ hg debugindex --dir dir1
301 $ hg debugindex --dir dir1
299 rev linkrev nodeid p1-nodeid p2-nodeid
302 rev linkrev nodeid p1-nodeid p2-nodeid
300 0 4 064927a0648a 000000000000 000000000000
303 0 4 064927a0648a 000000000000 000000000000
301 1 5 25ecb8cb8618 000000000000 000000000000
304 1 5 25ecb8cb8618 000000000000 000000000000
302 $ echo 2 > dir1/a
305 $ echo 2 > dir1/a
303 $ hg --config experimental.treemanifest=False ci -qm 'modify dir1/a'
306 $ hg --config experimental.treemanifest=False ci -qm 'modify dir1/a'
304 $ hg debugindex --dir dir1
307 $ hg debugindex --dir dir1
305 rev linkrev nodeid p1-nodeid p2-nodeid
308 rev linkrev nodeid p1-nodeid p2-nodeid
306 0 4 064927a0648a 000000000000 000000000000
309 0 4 064927a0648a 000000000000 000000000000
307 1 5 25ecb8cb8618 000000000000 000000000000
310 1 5 25ecb8cb8618 000000000000 000000000000
308 2 6 5b16163a30c6 25ecb8cb8618 000000000000
311 2 6 5b16163a30c6 25ecb8cb8618 000000000000
309
312
310 Stripping and recovering changes should work
313 Stripping and recovering changes should work
311
314
312 $ hg st --change tip
315 $ hg st --change tip
313 M dir1/a
316 M dir1/a
314 $ hg --config extensions.strip= strip tip
317 $ hg --config extensions.strip= strip tip
315 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
318 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
316 saved backup bundle to $TESTTMP/repo-mixed/.hg/strip-backup/51cfd7b1e13b-78a2f3ed-backup.hg
319 saved backup bundle to $TESTTMP/repo-mixed/.hg/strip-backup/51cfd7b1e13b-78a2f3ed-backup.hg
317 $ hg debugindex --dir dir1
320 $ hg debugindex --dir dir1
318 rev linkrev nodeid p1-nodeid p2-nodeid
321 rev linkrev nodeid p1-nodeid p2-nodeid
319 0 4 064927a0648a 000000000000 000000000000
322 0 4 064927a0648a 000000000000 000000000000
320 1 5 25ecb8cb8618 000000000000 000000000000
323 1 5 25ecb8cb8618 000000000000 000000000000
321
324
322 #if repobundlerepo
325 #if repobundlerepo
323 $ hg incoming .hg/strip-backup/*
326 $ hg incoming .hg/strip-backup/*
324 comparing with .hg/strip-backup/*-backup.hg (glob)
327 comparing with .hg/strip-backup/*-backup.hg (glob)
325 searching for changes
328 searching for changes
326 changeset: 6:51cfd7b1e13b
329 changeset: 6:51cfd7b1e13b
327 tag: tip
330 tag: tip
328 user: test
331 user: test
329 date: Thu Jan 01 00:00:00 1970 +0000
332 date: Thu Jan 01 00:00:00 1970 +0000
330 summary: modify dir1/a
333 summary: modify dir1/a
331
334
332 #endif
335 #endif
333
336
334 $ hg unbundle .hg/strip-backup/*
337 $ hg unbundle .hg/strip-backup/*
335 adding changesets
338 adding changesets
336 adding manifests
339 adding manifests
337 adding file changes
340 adding file changes
338 added 1 changesets with 1 changes to 1 files
341 added 1 changesets with 1 changes to 1 files
339 new changesets 51cfd7b1e13b (1 drafts)
342 new changesets 51cfd7b1e13b (1 drafts)
340 (run 'hg update' to get a working copy)
343 (run 'hg update' to get a working copy)
341 $ hg --config extensions.strip= strip tip
344 $ hg --config extensions.strip= strip tip
342 saved backup bundle to $TESTTMP/repo-mixed/.hg/strip-backup/*-backup.hg (glob)
345 saved backup bundle to $TESTTMP/repo-mixed/.hg/strip-backup/*-backup.hg (glob)
343 $ hg unbundle -q .hg/strip-backup/*
346 $ hg unbundle -q .hg/strip-backup/*
344 $ hg debugindex --dir dir1
347 $ hg debugindex --dir dir1
345 rev linkrev nodeid p1-nodeid p2-nodeid
348 rev linkrev nodeid p1-nodeid p2-nodeid
346 0 4 064927a0648a 000000000000 000000000000
349 0 4 064927a0648a 000000000000 000000000000
347 1 5 25ecb8cb8618 000000000000 000000000000
350 1 5 25ecb8cb8618 000000000000 000000000000
348 2 6 5b16163a30c6 25ecb8cb8618 000000000000
351 2 6 5b16163a30c6 25ecb8cb8618 000000000000
349 $ hg st --change tip
352 $ hg st --change tip
350 M dir1/a
353 M dir1/a
351
354
352 Shelving and unshelving should work
355 Shelving and unshelving should work
353
356
354 $ echo foo >> dir1/a
357 $ echo foo >> dir1/a
355 $ hg shelve
358 $ hg shelve
356 shelved as default
359 shelved as default
357 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
360 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
358 $ hg unshelve
361 $ hg unshelve
359 unshelving change 'default'
362 unshelving change 'default'
360 $ hg diff --nodates
363 $ hg diff --nodates
361 diff -r 708a273da119 dir1/a
364 diff -r 708a273da119 dir1/a
362 --- a/dir1/a
365 --- a/dir1/a
363 +++ b/dir1/a
366 +++ b/dir1/a
364 @@ -1,1 +1,2 @@
367 @@ -1,1 +1,2 @@
365 1
368 1
366 +foo
369 +foo
367
370
368 Pushing from treemanifest repo to an empty repo makes that a treemanifest repo
371 Pushing from treemanifest repo to an empty repo makes that a treemanifest repo
369
372
370 $ cd ..
373 $ cd ..
371 $ hg init empty-repo
374 $ hg init empty-repo
372 $ cat << EOF >> empty-repo/.hg/hgrc
375 $ cat << EOF >> empty-repo/.hg/hgrc
373 > [experimental]
376 > [experimental]
374 > changegroup3=yes
377 > changegroup3=yes
375 > EOF
378 > EOF
376 $ hg debugrequires -R empty-repo | grep treemanifest
379 $ hg debugrequires -R empty-repo | grep treemanifest
377 [1]
380 [1]
378 $ hg push -R repo -r 0 empty-repo
381 $ hg push -R repo -r 0 empty-repo
379 pushing to empty-repo
382 pushing to empty-repo
380 searching for changes
383 searching for changes
381 adding changesets
384 adding changesets
382 adding manifests
385 adding manifests
383 adding file changes
386 adding file changes
384 added 1 changesets with 2 changes to 2 files
387 added 1 changesets with 2 changes to 2 files
385 $ hg debugrequires -R empty-repo | grep treemanifest
388 $ hg debugrequires -R empty-repo | grep treemanifest
386 treemanifest
389 treemanifest
387
390
388 Pushing to an empty repo works
391 Pushing to an empty repo works
389
392
390 $ hg --config experimental.treemanifest=1 init clone
393 $ hg --config experimental.treemanifest=1 init clone
391 $ hg debugrequires -R clone | grep treemanifest
394 $ hg debugrequires -R clone | grep treemanifest
392 treemanifest
395 treemanifest
393 $ hg push -R repo clone
396 $ hg push -R repo clone
394 pushing to clone
397 pushing to clone
395 searching for changes
398 searching for changes
396 adding changesets
399 adding changesets
397 adding manifests
400 adding manifests
398 adding file changes
401 adding file changes
399 added 11 changesets with 15 changes to 10 files (+3 heads)
402 added 11 changesets with 15 changes to 10 files (+3 heads)
400 $ hg debugrequires -R clone | grep treemanifest
403 $ hg debugrequires -R clone | grep treemanifest
401 treemanifest
404 treemanifest
402 $ hg -R clone verify -q
405 $ hg -R clone verify -q
403
406
404 Create deeper repo with tree manifests.
407 Create deeper repo with tree manifests.
405
408
406 $ hg --config experimental.treemanifest=True init deeprepo
409 $ hg --config experimental.treemanifest=True init deeprepo
407 $ cd deeprepo
410 $ cd deeprepo
408
411
409 $ mkdir .A
412 $ mkdir .A
410 $ mkdir b
413 $ mkdir b
411 $ mkdir b/bar
414 $ mkdir b/bar
412 $ mkdir b/bar/orange
415 $ mkdir b/bar/orange
413 $ mkdir b/bar/orange/fly
416 $ mkdir b/bar/orange/fly
414 $ mkdir b/foo
417 $ mkdir b/foo
415 $ mkdir b/foo/apple
418 $ mkdir b/foo/apple
416 $ mkdir b/foo/apple/bees
419 $ mkdir b/foo/apple/bees
417
420
418 $ touch .A/one.txt
421 $ touch .A/one.txt
419 $ touch .A/two.txt
422 $ touch .A/two.txt
420 $ touch b/bar/fruits.txt
423 $ touch b/bar/fruits.txt
421 $ touch b/bar/orange/fly/gnat.py
424 $ touch b/bar/orange/fly/gnat.py
422 $ touch b/bar/orange/fly/housefly.txt
425 $ touch b/bar/orange/fly/housefly.txt
423 $ touch b/foo/apple/bees/flower.py
426 $ touch b/foo/apple/bees/flower.py
424 $ touch c.txt
427 $ touch c.txt
425 $ touch d.py
428 $ touch d.py
426
429
427 $ hg ci -Aqm 'initial'
430 $ hg ci -Aqm 'initial'
428
431
429 $ echo >> .A/one.txt
432 $ echo >> .A/one.txt
430 $ echo >> .A/two.txt
433 $ echo >> .A/two.txt
431 $ echo >> b/bar/fruits.txt
434 $ echo >> b/bar/fruits.txt
432 $ echo >> b/bar/orange/fly/gnat.py
435 $ echo >> b/bar/orange/fly/gnat.py
433 $ echo >> b/bar/orange/fly/housefly.txt
436 $ echo >> b/bar/orange/fly/housefly.txt
434 $ echo >> b/foo/apple/bees/flower.py
437 $ echo >> b/foo/apple/bees/flower.py
435 $ echo >> c.txt
438 $ echo >> c.txt
436 $ echo >> d.py
439 $ echo >> d.py
437 $ hg ci -Aqm 'second'
440 $ hg ci -Aqm 'second'
438
441
439 We'll see that visitdir works by removing some treemanifest revlogs and running
442 We'll see that visitdir works by removing some treemanifest revlogs and running
440 the files command with various parameters.
443 the files command with various parameters.
441
444
442 Test files from the root.
445 Test files from the root.
443
446
444 $ hg files -r .
447 $ hg files -r .
445 .A/one.txt
448 .A/one.txt
446 .A/two.txt
449 .A/two.txt
447 b/bar/fruits.txt
450 b/bar/fruits.txt
448 b/bar/orange/fly/gnat.py
451 b/bar/orange/fly/gnat.py
449 b/bar/orange/fly/housefly.txt
452 b/bar/orange/fly/housefly.txt
450 b/foo/apple/bees/flower.py
453 b/foo/apple/bees/flower.py
451 c.txt
454 c.txt
452 d.py
455 d.py
453
456
454 Excludes with a glob should not exclude everything from the glob's root
457 Excludes with a glob should not exclude everything from the glob's root
455
458
456 $ hg files -r . -X 'b/fo?' b
459 $ hg files -r . -X 'b/fo?' b
457 b/bar/fruits.txt
460 b/bar/fruits.txt
458 b/bar/orange/fly/gnat.py
461 b/bar/orange/fly/gnat.py
459 b/bar/orange/fly/housefly.txt
462 b/bar/orange/fly/housefly.txt
460 $ cp -R .hg/store .hg/store-copy
463 $ cp -R .hg/store .hg/store-copy
461
464
462 Test files for a subdirectory.
465 Test files for a subdirectory.
463
466
464 #if reporevlogstore
467 #if reporevlogstore
465 $ rm -r .hg/store/meta/~2e_a
468 $ rm -r .hg/store/meta/~2e_a
466 #endif
469 #endif
467 #if reposimplestore
470 #if reposimplestore
468 $ rm -r .hg/store/meta/._a
471 $ rm -r .hg/store/meta/._a
469 #endif
472 #endif
470 $ hg files -r . b
473 $ hg files -r . b
471 b/bar/fruits.txt
474 b/bar/fruits.txt
472 b/bar/orange/fly/gnat.py
475 b/bar/orange/fly/gnat.py
473 b/bar/orange/fly/housefly.txt
476 b/bar/orange/fly/housefly.txt
474 b/foo/apple/bees/flower.py
477 b/foo/apple/bees/flower.py
475 $ hg diff -r '.^' -r . --stat b
478 $ hg diff -r '.^' -r . --stat b
476 b/bar/fruits.txt | 1 +
479 b/bar/fruits.txt | 1 +
477 b/bar/orange/fly/gnat.py | 1 +
480 b/bar/orange/fly/gnat.py | 1 +
478 b/bar/orange/fly/housefly.txt | 1 +
481 b/bar/orange/fly/housefly.txt | 1 +
479 b/foo/apple/bees/flower.py | 1 +
482 b/foo/apple/bees/flower.py | 1 +
480 4 files changed, 4 insertions(+), 0 deletions(-)
483 4 files changed, 4 insertions(+), 0 deletions(-)
481 $ cp -R .hg/store-copy/. .hg/store
484 $ cp -R .hg/store-copy/. .hg/store
482
485
483 Test files with just includes and excludes.
486 Test files with just includes and excludes.
484
487
485 #if reporevlogstore
488 #if reporevlogstore
486 $ rm -r .hg/store/meta/~2e_a
489 $ rm -r .hg/store/meta/~2e_a
487 #endif
490 #endif
488 #if reposimplestore
491 #if reposimplestore
489 $ rm -r .hg/store/meta/._a
492 $ rm -r .hg/store/meta/._a
490 #endif
493 #endif
491 $ rm -r .hg/store/meta/b/bar/orange/fly
494 $ rm -r .hg/store/meta/b/bar/orange/fly
492 $ rm -r .hg/store/meta/b/foo/apple/bees
495 $ rm -r .hg/store/meta/b/foo/apple/bees
493 $ hg files -r . -I path:b/bar -X path:b/bar/orange/fly -I path:b/foo -X path:b/foo/apple/bees
496 $ hg files -r . -I path:b/bar -X path:b/bar/orange/fly -I path:b/foo -X path:b/foo/apple/bees
494 b/bar/fruits.txt
497 b/bar/fruits.txt
495 $ hg diff -r '.^' -r . --stat -I path:b/bar -X path:b/bar/orange/fly -I path:b/foo -X path:b/foo/apple/bees
498 $ hg diff -r '.^' -r . --stat -I path:b/bar -X path:b/bar/orange/fly -I path:b/foo -X path:b/foo/apple/bees
496 b/bar/fruits.txt | 1 +
499 b/bar/fruits.txt | 1 +
497 1 files changed, 1 insertions(+), 0 deletions(-)
500 1 files changed, 1 insertions(+), 0 deletions(-)
498 $ cp -R .hg/store-copy/. .hg/store
501 $ cp -R .hg/store-copy/. .hg/store
499
502
500 Test files for a subdirectory, excluding a directory within it.
503 Test files for a subdirectory, excluding a directory within it.
501
504
502 #if reporevlogstore
505 #if reporevlogstore
503 $ rm -r .hg/store/meta/~2e_a
506 $ rm -r .hg/store/meta/~2e_a
504 #endif
507 #endif
505 #if reposimplestore
508 #if reposimplestore
506 $ rm -r .hg/store/meta/._a
509 $ rm -r .hg/store/meta/._a
507 #endif
510 #endif
508 $ rm -r .hg/store/meta/b/foo
511 $ rm -r .hg/store/meta/b/foo
509 $ hg files -r . -X path:b/foo b
512 $ hg files -r . -X path:b/foo b
510 b/bar/fruits.txt
513 b/bar/fruits.txt
511 b/bar/orange/fly/gnat.py
514 b/bar/orange/fly/gnat.py
512 b/bar/orange/fly/housefly.txt
515 b/bar/orange/fly/housefly.txt
513 $ hg diff -r '.^' -r . --stat -X path:b/foo b
516 $ hg diff -r '.^' -r . --stat -X path:b/foo b
514 b/bar/fruits.txt | 1 +
517 b/bar/fruits.txt | 1 +
515 b/bar/orange/fly/gnat.py | 1 +
518 b/bar/orange/fly/gnat.py | 1 +
516 b/bar/orange/fly/housefly.txt | 1 +
519 b/bar/orange/fly/housefly.txt | 1 +
517 3 files changed, 3 insertions(+), 0 deletions(-)
520 3 files changed, 3 insertions(+), 0 deletions(-)
518 $ cp -R .hg/store-copy/. .hg/store
521 $ cp -R .hg/store-copy/. .hg/store
519
522
520 Test files for a sub directory, including only a directory within it, and
523 Test files for a sub directory, including only a directory within it, and
521 including an unrelated directory.
524 including an unrelated directory.
522
525
523 #if reporevlogstore
526 #if reporevlogstore
524 $ rm -r .hg/store/meta/~2e_a
527 $ rm -r .hg/store/meta/~2e_a
525 #endif
528 #endif
526 #if reposimplestore
529 #if reposimplestore
527 $ rm -r .hg/store/meta/._a
530 $ rm -r .hg/store/meta/._a
528 #endif
531 #endif
529 $ rm -r .hg/store/meta/b/foo
532 $ rm -r .hg/store/meta/b/foo
530 $ hg files -r . -I path:b/bar/orange -I path:a b
533 $ hg files -r . -I path:b/bar/orange -I path:a b
531 b/bar/orange/fly/gnat.py
534 b/bar/orange/fly/gnat.py
532 b/bar/orange/fly/housefly.txt
535 b/bar/orange/fly/housefly.txt
533 $ hg diff -r '.^' -r . --stat -I path:b/bar/orange -I path:a b
536 $ hg diff -r '.^' -r . --stat -I path:b/bar/orange -I path:a b
534 b/bar/orange/fly/gnat.py | 1 +
537 b/bar/orange/fly/gnat.py | 1 +
535 b/bar/orange/fly/housefly.txt | 1 +
538 b/bar/orange/fly/housefly.txt | 1 +
536 2 files changed, 2 insertions(+), 0 deletions(-)
539 2 files changed, 2 insertions(+), 0 deletions(-)
537 $ cp -R .hg/store-copy/. .hg/store
540 $ cp -R .hg/store-copy/. .hg/store
538
541
539 Test files for a pattern, including a directory, and excluding a directory
542 Test files for a pattern, including a directory, and excluding a directory
540 within that.
543 within that.
541
544
542 #if reporevlogstore
545 #if reporevlogstore
543 $ rm -r .hg/store/meta/~2e_a
546 $ rm -r .hg/store/meta/~2e_a
544 #endif
547 #endif
545 #if reposimplestore
548 #if reposimplestore
546 $ rm -r .hg/store/meta/._a
549 $ rm -r .hg/store/meta/._a
547 #endif
550 #endif
548 $ rm -r .hg/store/meta/b/foo
551 $ rm -r .hg/store/meta/b/foo
549 $ rm -r .hg/store/meta/b/bar/orange
552 $ rm -r .hg/store/meta/b/bar/orange
550 $ hg files -r . glob:**.txt -I path:b/bar -X path:b/bar/orange
553 $ hg files -r . glob:**.txt -I path:b/bar -X path:b/bar/orange
551 b/bar/fruits.txt
554 b/bar/fruits.txt
552 $ hg diff -r '.^' -r . --stat glob:**.txt -I path:b/bar -X path:b/bar/orange
555 $ hg diff -r '.^' -r . --stat glob:**.txt -I path:b/bar -X path:b/bar/orange
553 b/bar/fruits.txt | 1 +
556 b/bar/fruits.txt | 1 +
554 1 files changed, 1 insertions(+), 0 deletions(-)
557 1 files changed, 1 insertions(+), 0 deletions(-)
555 $ cp -R .hg/store-copy/. .hg/store
558 $ cp -R .hg/store-copy/. .hg/store
556
559
557 Add some more changes to the deep repo
560 Add some more changes to the deep repo
558 $ echo narf >> b/bar/fruits.txt
561 $ echo narf >> b/bar/fruits.txt
559 $ hg ci -m narf
562 $ hg ci -m narf
560 $ echo troz >> b/bar/orange/fly/gnat.py
563 $ echo troz >> b/bar/orange/fly/gnat.py
561 $ hg ci -m troz
564 $ hg ci -m troz
562
565
563 Verify works
566 Verify works
564 $ hg verify -q
567 $ hg verify -q
565
568
566 #if repofncache
569 #if repofncache
567 Dirlogs are included in fncache
570 Dirlogs are included in fncache
568 $ grep meta/.A/00manifest.i .hg/store/fncache
571 $ grep meta/.A/00manifest.i .hg/store/fncache
569 meta/.A/00manifest.i
572 meta/.A/00manifest.i
570
573
571 Rebuilt fncache includes dirlogs
574 Rebuilt fncache includes dirlogs
572 $ rm .hg/store/fncache
575 $ rm .hg/store/fncache
573 $ hg debugrebuildfncache
576 $ hg debugrebuildfncache
574 adding data/.A/one.txt.i
577 adding data/.A/one.txt.i
575 adding data/.A/two.txt.i
578 adding data/.A/two.txt.i
576 adding data/b/bar/fruits.txt.i
579 adding data/b/bar/fruits.txt.i
577 adding data/b/bar/orange/fly/gnat.py.i
580 adding data/b/bar/orange/fly/gnat.py.i
578 adding data/b/bar/orange/fly/housefly.txt.i
581 adding data/b/bar/orange/fly/housefly.txt.i
579 adding data/b/foo/apple/bees/flower.py.i
582 adding data/b/foo/apple/bees/flower.py.i
580 adding data/c.txt.i
583 adding data/c.txt.i
581 adding data/d.py.i
584 adding data/d.py.i
582 adding meta/.A/00manifest.i
585 adding meta/.A/00manifest.i
583 adding meta/b/00manifest.i
586 adding meta/b/00manifest.i
584 adding meta/b/bar/00manifest.i
587 adding meta/b/bar/00manifest.i
585 adding meta/b/bar/orange/00manifest.i
588 adding meta/b/bar/orange/00manifest.i
586 adding meta/b/bar/orange/fly/00manifest.i
589 adding meta/b/bar/orange/fly/00manifest.i
587 adding meta/b/foo/00manifest.i
590 adding meta/b/foo/00manifest.i
588 adding meta/b/foo/apple/00manifest.i
591 adding meta/b/foo/apple/00manifest.i
589 adding meta/b/foo/apple/bees/00manifest.i
592 adding meta/b/foo/apple/bees/00manifest.i
590 16 items added, 0 removed from fncache
593 16 items added, 0 removed from fncache
591 #endif
594 #endif
592
595
593 Finish first server
596 Finish first server
594 $ killdaemons.py
597 $ killdaemons.py
595
598
596 Back up the recently added revlogs
599 Back up the recently added revlogs
597 $ cp -R .hg/store .hg/store-newcopy
600 $ cp -R .hg/store .hg/store-newcopy
598
601
599 Verify reports missing dirlog
602 Verify reports missing dirlog
600 $ rm .hg/store/meta/b/00manifest.*
603 $ rm .hg/store/meta/b/00manifest.*
601 $ hg verify
604 $ hg verify
602 checking changesets
605 checking changesets
603 checking manifests
606 checking manifests
604 checking directory manifests
607 checking directory manifests
605 0: empty or missing b/
608 0: empty or missing b/
606 b/@0: parent-directory manifest refers to unknown revision 67688a370455
609 b/@0: parent-directory manifest refers to unknown revision 67688a370455
607 b/@1: parent-directory manifest refers to unknown revision f065da70369e
610 b/@1: parent-directory manifest refers to unknown revision f065da70369e
608 b/@2: parent-directory manifest refers to unknown revision ac0d30948e0b
611 b/@2: parent-directory manifest refers to unknown revision ac0d30948e0b
609 b/@3: parent-directory manifest refers to unknown revision 367152e6af28
612 b/@3: parent-directory manifest refers to unknown revision 367152e6af28
610 warning: orphan data file 'meta/b/bar/00manifest.i' (reporevlogstore !)
613 warning: orphan data file 'meta/b/bar/00manifest.i' (reporevlogstore !)
611 warning: orphan data file 'meta/b/bar/orange/00manifest.i' (reporevlogstore !)
614 warning: orphan data file 'meta/b/bar/orange/00manifest.i' (reporevlogstore !)
612 warning: orphan data file 'meta/b/bar/orange/fly/00manifest.i' (reporevlogstore !)
615 warning: orphan data file 'meta/b/bar/orange/fly/00manifest.i' (reporevlogstore !)
613 warning: orphan data file 'meta/b/foo/00manifest.i' (reporevlogstore !)
616 warning: orphan data file 'meta/b/foo/00manifest.i' (reporevlogstore !)
614 warning: orphan data file 'meta/b/foo/apple/00manifest.i' (reporevlogstore !)
617 warning: orphan data file 'meta/b/foo/apple/00manifest.i' (reporevlogstore !)
615 warning: orphan data file 'meta/b/foo/apple/bees/00manifest.i' (reporevlogstore !)
618 warning: orphan data file 'meta/b/foo/apple/bees/00manifest.i' (reporevlogstore !)
616 crosschecking files in changesets and manifests
619 crosschecking files in changesets and manifests
617 b/bar/fruits.txt@0: in changeset but not in manifest
620 b/bar/fruits.txt@0: in changeset but not in manifest
618 b/bar/orange/fly/gnat.py@0: in changeset but not in manifest
621 b/bar/orange/fly/gnat.py@0: in changeset but not in manifest
619 b/bar/orange/fly/housefly.txt@0: in changeset but not in manifest
622 b/bar/orange/fly/housefly.txt@0: in changeset but not in manifest
620 b/foo/apple/bees/flower.py@0: in changeset but not in manifest
623 b/foo/apple/bees/flower.py@0: in changeset but not in manifest
621 checking files
624 checking files
622 not checking dirstate because of previous errors
625 not checking dirstate because of previous errors
623 checked 4 changesets with 18 changes to 8 files
626 checked 4 changesets with 18 changes to 8 files
624 6 warnings encountered! (reporevlogstore !)
627 6 warnings encountered! (reporevlogstore !)
625 9 integrity errors encountered!
628 9 integrity errors encountered!
626 (first damaged changeset appears to be 0)
629 (first damaged changeset appears to be 0)
627 [1]
630 [1]
628 $ cp -R .hg/store-newcopy/. .hg/store
631 $ cp -R .hg/store-newcopy/. .hg/store
629
632
630 Verify reports missing dirlog entry
633 Verify reports missing dirlog entry
631 $ mv -f .hg/store-copy/meta/b/00manifest.* .hg/store/meta/b/
634 $ mv -f .hg/store-copy/meta/b/00manifest.* .hg/store/meta/b/
632 $ hg verify
635 $ hg verify
633 checking changesets
636 checking changesets
634 checking manifests
637 checking manifests
635 checking directory manifests
638 checking directory manifests
636 b/@2: parent-directory manifest refers to unknown revision ac0d30948e0b
639 b/@2: parent-directory manifest refers to unknown revision ac0d30948e0b
637 b/@3: parent-directory manifest refers to unknown revision 367152e6af28
640 b/@3: parent-directory manifest refers to unknown revision 367152e6af28
638 b/bar/@?: rev 2 points to unexpected changeset 2
641 b/bar/@?: rev 2 points to unexpected changeset 2
639 b/bar/@?: 44d7e1146e0d not in parent-directory manifest
642 b/bar/@?: 44d7e1146e0d not in parent-directory manifest
640 b/bar/@?: rev 3 points to unexpected changeset 3
643 b/bar/@?: rev 3 points to unexpected changeset 3
641 b/bar/@?: 70b10c6b17b7 not in parent-directory manifest
644 b/bar/@?: 70b10c6b17b7 not in parent-directory manifest
642 b/bar/orange/@?: rev 2 points to unexpected changeset 3
645 b/bar/orange/@?: rev 2 points to unexpected changeset 3
643 (expected None)
646 (expected None)
644 b/bar/orange/fly/@?: rev 2 points to unexpected changeset 3
647 b/bar/orange/fly/@?: rev 2 points to unexpected changeset 3
645 (expected None)
648 (expected None)
646 crosschecking files in changesets and manifests
649 crosschecking files in changesets and manifests
647 checking files
650 checking files
648 not checking dirstate because of previous errors
651 not checking dirstate because of previous errors
649 checked 4 changesets with 18 changes to 8 files
652 checked 4 changesets with 18 changes to 8 files
650 2 warnings encountered!
653 2 warnings encountered!
651 8 integrity errors encountered!
654 8 integrity errors encountered!
652 (first damaged changeset appears to be 2)
655 (first damaged changeset appears to be 2)
653 [1]
656 [1]
654 $ cp -R .hg/store-newcopy/. .hg/store
657 $ cp -R .hg/store-newcopy/. .hg/store
655
658
656 Test cloning a treemanifest repo over http.
659 Test cloning a treemanifest repo over http.
657 $ hg serve -p $HGPORT -d --pid-file=hg.pid --errorlog=errors.log
658 $ cat hg.pid >> $DAEMON_PIDS
659 $ cd ..
660 $ cd ..
661 $ hg -R deeprepo serve -p $HGPORT -d \
662 > --pid-file=port-0-hg.pid \
663 > --errorlog=port-0-errors.log
664 $ cat port-0-hg.pid >> $DAEMON_PIDS
665
660 We can clone even with the knob turned off and we'll get a treemanifest repo.
666 We can clone even with the knob turned off and we'll get a treemanifest repo.
661 $ hg clone --config experimental.treemanifest=False \
667 $ hg clone --config experimental.treemanifest=False \
662 > --config experimental.changegroup3=True \
668 > --config experimental.changegroup3=True \
663 > http://localhost:$HGPORT deepclone
669 > http://localhost:$HGPORT deepclone
664 requesting all changes
670 requesting all changes
665 adding changesets
671 adding changesets
666 adding manifests
672 adding manifests
667 adding file changes
673 adding file changes
668 added 4 changesets with 18 changes to 8 files
674 added 4 changesets with 18 changes to 8 files
669 new changesets 775704be6f52:523e5c631710
675 new changesets 775704be6f52:523e5c631710
670 updating to branch default
676 updating to branch default
671 8 files updated, 0 files merged, 0 files removed, 0 files unresolved
677 8 files updated, 0 files merged, 0 files removed, 0 files unresolved
672 No server errors.
678 No server errors.
673 $ cat deeprepo/errors.log
679 $ cat port-0-errors.log
680
674 requires got updated to include treemanifest
681 requires got updated to include treemanifest
675 $ hg debugrequires -R deepclone | grep treemanifest
682 $ hg debugrequires -R deepclone | grep treemanifest
676 treemanifest
683 treemanifest
677 Tree manifest revlogs exist.
684 Tree manifest revlogs exist.
678 $ find deepclone/.hg/store/meta | sort
685 $ find deepclone/.hg/store/meta | sort
679 deepclone/.hg/store/meta
686 deepclone/.hg/store/meta
680 deepclone/.hg/store/meta/._a (reposimplestore !)
687 deepclone/.hg/store/meta/._a (reposimplestore !)
681 deepclone/.hg/store/meta/._a/00manifest.i (reposimplestore !)
688 deepclone/.hg/store/meta/._a/00manifest.i (reposimplestore !)
682 deepclone/.hg/store/meta/b
689 deepclone/.hg/store/meta/b
683 deepclone/.hg/store/meta/b/00manifest.i
690 deepclone/.hg/store/meta/b/00manifest.i
684 deepclone/.hg/store/meta/b/bar
691 deepclone/.hg/store/meta/b/bar
685 deepclone/.hg/store/meta/b/bar/00manifest.i
692 deepclone/.hg/store/meta/b/bar/00manifest.i
686 deepclone/.hg/store/meta/b/bar/orange
693 deepclone/.hg/store/meta/b/bar/orange
687 deepclone/.hg/store/meta/b/bar/orange/00manifest.i
694 deepclone/.hg/store/meta/b/bar/orange/00manifest.i
688 deepclone/.hg/store/meta/b/bar/orange/fly
695 deepclone/.hg/store/meta/b/bar/orange/fly
689 deepclone/.hg/store/meta/b/bar/orange/fly/00manifest.i
696 deepclone/.hg/store/meta/b/bar/orange/fly/00manifest.i
690 deepclone/.hg/store/meta/b/foo
697 deepclone/.hg/store/meta/b/foo
691 deepclone/.hg/store/meta/b/foo/00manifest.i
698 deepclone/.hg/store/meta/b/foo/00manifest.i
692 deepclone/.hg/store/meta/b/foo/apple
699 deepclone/.hg/store/meta/b/foo/apple
693 deepclone/.hg/store/meta/b/foo/apple/00manifest.i
700 deepclone/.hg/store/meta/b/foo/apple/00manifest.i
694 deepclone/.hg/store/meta/b/foo/apple/bees
701 deepclone/.hg/store/meta/b/foo/apple/bees
695 deepclone/.hg/store/meta/b/foo/apple/bees/00manifest.i
702 deepclone/.hg/store/meta/b/foo/apple/bees/00manifest.i
696 deepclone/.hg/store/meta/~2e_a (reporevlogstore !)
703 deepclone/.hg/store/meta/~2e_a (reporevlogstore !)
697 deepclone/.hg/store/meta/~2e_a/00manifest.i (reporevlogstore !)
704 deepclone/.hg/store/meta/~2e_a/00manifest.i (reporevlogstore !)
698 Verify passes.
705 Verify passes.
699 $ cd deepclone
706 $ cd deepclone
700 $ hg verify -q
707 $ hg verify -q
701 $ cd ..
708 $ cd ..
702
709
703 #if reporevlogstore
710 #if reporevlogstore
704 Create clones using old repo formats to use in later tests
711 Create clones using old repo formats to use in later tests
705 $ hg clone --config format.usestore=False \
712 $ hg clone --config format.usestore=False \
706 > --config experimental.changegroup3=True \
713 > --config experimental.changegroup3=True \
707 > http://localhost:$HGPORT deeprepo-basicstore
714 > http://localhost:$HGPORT deeprepo-basicstore
708 requesting all changes
715 requesting all changes
709 adding changesets
716 adding changesets
710 adding manifests
717 adding manifests
711 adding file changes
718 adding file changes
712 added 4 changesets with 18 changes to 8 files
719 added 4 changesets with 18 changes to 8 files
713 new changesets 775704be6f52:523e5c631710
720 new changesets 775704be6f52:523e5c631710
714 updating to branch default
721 updating to branch default
715 8 files updated, 0 files merged, 0 files removed, 0 files unresolved
722 8 files updated, 0 files merged, 0 files removed, 0 files unresolved
716 $ cd deeprepo-basicstore
723 $ hg -R deeprepo-basicstore debugrequires | grep store
717 $ hg debugrequires | grep store
718 [1]
724 [1]
719 $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --errorlog=errors.log
725 $ hg -R deeprepo-basicstore serve -p $HGPORT1 -d \
720 $ cat hg.pid >> $DAEMON_PIDS
726 > --pid-file=port-1-hg.pid \
721 $ cd ..
727 > --errorlog=port-1-errors.log
728 $ cat port-1-hg.pid >> $DAEMON_PIDS
729
722 $ hg clone --config format.usefncache=False \
730 $ hg clone --config format.usefncache=False \
723 > --config experimental.changegroup3=True \
731 > --config experimental.changegroup3=True \
724 > http://localhost:$HGPORT deeprepo-encodedstore
732 > http://localhost:$HGPORT deeprepo-encodedstore
725 requesting all changes
733 requesting all changes
726 adding changesets
734 adding changesets
727 adding manifests
735 adding manifests
728 adding file changes
736 adding file changes
729 added 4 changesets with 18 changes to 8 files
737 added 4 changesets with 18 changes to 8 files
730 new changesets 775704be6f52:523e5c631710
738 new changesets 775704be6f52:523e5c631710
731 updating to branch default
739 updating to branch default
732 8 files updated, 0 files merged, 0 files removed, 0 files unresolved
740 8 files updated, 0 files merged, 0 files removed, 0 files unresolved
733 $ cd deeprepo-encodedstore
741 $ hg -R deeprepo-encodedstore debugrequires | grep fncache
734 $ hg debugrequires | grep fncache
735 [1]
742 [1]
736 $ hg serve -p $HGPORT2 -d --pid-file=hg.pid --errorlog=errors.log
743 $ hg -R deeprepo-encodedstore serve -p $HGPORT2 -d \
737 $ cat hg.pid >> $DAEMON_PIDS
744 > --pid-file=port-2-hg.pid \
738 $ cd ..
745 > --errorlog=port-2-errors.log
746 $ cat port-2-hg.pid >> $DAEMON_PIDS
739
747
740 Local clone with basicstore
748 Local clone with basicstore
741 $ hg clone -U deeprepo-basicstore local-clone-basicstore
749 $ hg clone -U deeprepo-basicstore local-clone-basicstore
742 $ hg -R local-clone-basicstore verify -q
750 $ hg -R local-clone-basicstore verify -q
743
751
744 Local clone with encodedstore
752 Local clone with encodedstore
745 $ hg clone -U deeprepo-encodedstore local-clone-encodedstore
753 $ hg clone -U deeprepo-encodedstore local-clone-encodedstore
746 $ hg -R local-clone-encodedstore verify -q
754 $ hg -R local-clone-encodedstore verify -q
747
755
748 Local clone with fncachestore
756 Local clone with fncachestore
749 $ hg clone -U deeprepo local-clone-fncachestore
757 $ hg clone -U deeprepo local-clone-fncachestore
750 $ hg -R local-clone-fncachestore verify -q
758 $ hg -R local-clone-fncachestore verify -q
751
759
752 Stream clone with basicstore
760 Stream clone with basicstore
753 $ hg clone --config experimental.changegroup3=True --stream -U \
761 $ hg clone --config experimental.changegroup3=True --stream -U \
754 > http://localhost:$HGPORT1 stream-clone-basicstore
762 > http://localhost:$HGPORT1 stream-clone-basicstore
755 streaming all changes
763 streaming all changes
756 28 files to transfer, * of data (glob)
764 28 files to transfer, * of data (glob)
757 transferred * in * seconds (*) (glob)
765 transferred * in * seconds (*) (glob)
758 $ hg -R stream-clone-basicstore verify -q
766 $ hg -R stream-clone-basicstore verify -q
767 $ cat port-1-errors.log
759
768
760 Stream clone with encodedstore
769 Stream clone with encodedstore
761 $ hg clone --config experimental.changegroup3=True --stream -U \
770 $ hg clone --config experimental.changegroup3=True --stream -U \
762 > http://localhost:$HGPORT2 stream-clone-encodedstore
771 > http://localhost:$HGPORT2 stream-clone-encodedstore
763 streaming all changes
772 streaming all changes
764 28 files to transfer, * of data (glob)
773 28 files to transfer, * of data (glob)
765 transferred * in * seconds (*) (glob)
774 transferred * in * seconds (*) (glob)
766 $ hg -R stream-clone-encodedstore verify -q
775 $ hg -R stream-clone-encodedstore verify -q
776 $ cat port-2-errors.log
767
777
768 Stream clone with fncachestore
778 Stream clone with fncachestore
769 $ hg clone --config experimental.changegroup3=True --stream -U \
779 $ hg clone --config experimental.changegroup3=True --stream -U \
770 > http://localhost:$HGPORT stream-clone-fncachestore
780 > http://localhost:$HGPORT stream-clone-fncachestore
771 streaming all changes
781 streaming all changes
772 22 files to transfer, * of data (glob)
782 22 files to transfer, * of data (glob)
773 transferred * in * seconds (*) (glob)
783 transferred * in * seconds (*) (glob)
774 $ hg -R stream-clone-fncachestore verify -q
784 $ hg -R stream-clone-fncachestore verify -q
785 $ cat port-0-errors.log
775
786
776 Packed bundle
787 Packed bundle
777 $ hg -R deeprepo debugcreatestreamclonebundle repo-packed.hg
788 $ hg -R deeprepo debugcreatestreamclonebundle repo-packed.hg
778 writing 5330 bytes for 18 files (no-zstd !)
789 writing 5330 bytes for 18 files (no-zstd !)
779 writing 5400 bytes for 18 files (zstd !)
790 writing 5400 bytes for 18 files (zstd !)
780 bundle requirements:.* treemanifest(,.*)? (re)
791 bundle requirements:.* treemanifest(,.*)? (re)
781 $ hg debugbundle --spec repo-packed.hg
792 $ hg debugbundle --spec repo-packed.hg
782 none-packed1;requirements%3D(.*%2C)?treemanifest(%2C.*)? (re)
793 none-packed1;requirements%3D(.*%2C)?treemanifest(%2C.*)? (re)
783
794
784 #endif
795 #endif
785
796
786 Bundle with changegroup2 is not supported
797 Bundle with changegroup2 is not supported
787
798
788 $ hg -R deeprepo bundle --all -t v2 deeprepo.bundle
799 $ hg -R deeprepo bundle --all -t v2 deeprepo.bundle
789 abort: repository does not support bundle version 02
800 abort: repository does not support bundle version 02
790 [255]
801 [255]
791
802
792 Pull does not include changegroup for manifest the client already has from
803 Pull does not include changegroup for manifest the client already has from
793 other branch
804 other branch
794
805
795 $ mkdir grafted-dir-repo
806 $ mkdir grafted-dir-repo
796 $ cd grafted-dir-repo
807 $ cd grafted-dir-repo
797 $ hg --config experimental.treemanifest=1 init
808 $ hg --config experimental.treemanifest=1 init
798 $ mkdir dir
809 $ mkdir dir
799 $ echo a > dir/file
810 $ echo a > dir/file
800 $ echo a > file
811 $ echo a > file
801 $ hg ci -Am initial
812 $ hg ci -Am initial
802 adding dir/file
813 adding dir/file
803 adding file
814 adding file
804 $ echo b > dir/file
815 $ echo b > dir/file
805 $ hg ci -m updated
816 $ hg ci -m updated
806 $ hg co '.^'
817 $ hg co '.^'
807 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
818 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
808 $ hg revert -r tip dir/
819 $ hg revert -r tip dir/
809 reverting dir/file
820 reverting dir/file
810 $ echo b > file # to make sure root manifest is sent
821 $ echo b > file # to make sure root manifest is sent
811 $ hg ci -m grafted
822 $ hg ci -m grafted
812 created new head
823 created new head
813 $ cd ..
824 $ cd ..
814
825
815 $ hg --config experimental.treemanifest=1 clone --pull -r 1 \
826 $ hg --config experimental.treemanifest=1 clone --pull -r 1 \
816 > grafted-dir-repo grafted-dir-repo-clone
827 > grafted-dir-repo grafted-dir-repo-clone
817 adding changesets
828 adding changesets
818 adding manifests
829 adding manifests
819 adding file changes
830 adding file changes
820 added 2 changesets with 3 changes to 2 files
831 added 2 changesets with 3 changes to 2 files
821 new changesets d84f4c419457:09ab742f3b0f
832 new changesets d84f4c419457:09ab742f3b0f
822 updating to branch default
833 updating to branch default
823 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
834 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
824 $ cd grafted-dir-repo-clone
835 $ cd grafted-dir-repo-clone
825 $ hg pull -r 2
836 $ hg pull -r 2
826 pulling from $TESTTMP/grafted-dir-repo
837 pulling from $TESTTMP/grafted-dir-repo
827 searching for changes
838 searching for changes
828 adding changesets
839 adding changesets
829 adding manifests
840 adding manifests
830 adding file changes
841 adding file changes
831 added 1 changesets with 1 changes to 1 files (+1 heads)
842 added 1 changesets with 1 changes to 1 files (+1 heads)
832 new changesets 73699489fb7c
843 new changesets 73699489fb7c
833 (run 'hg heads' to see heads, 'hg merge' to merge)
844 (run 'hg heads' to see heads, 'hg merge' to merge)
834
845
835 Committing a empty commit does not duplicate root treemanifest
846 Committing a empty commit does not duplicate root treemanifest
836 $ echo z >> z
847 $ echo z >> z
837 $ hg commit -Aqm 'pre-empty commit'
848 $ hg commit -Aqm 'pre-empty commit'
838 $ hg rm z
849 $ hg rm z
839 $ hg commit --amend -m 'empty commit'
850 $ hg commit --amend -m 'empty commit'
840 saved backup bundle to $TESTTMP/grafted-dir-repo-clone/.hg/strip-backup/cb99d5717cea-9e3b6b02-amend.hg
851 saved backup bundle to $TESTTMP/grafted-dir-repo-clone/.hg/strip-backup/cb99d5717cea-9e3b6b02-amend.hg
841 $ hg log -r 'tip + tip^' -T '{manifest}\n'
852 $ hg log -r 'tip + tip^' -T '{manifest}\n'
842 1:678d3574b88c
853 1:678d3574b88c
843 1:678d3574b88c
854 1:678d3574b88c
844 $ hg --config extensions.strip= strip -r . -q
855 $ hg --config extensions.strip= strip -r . -q
General Comments 0
You need to be logged in to leave comments. Login now