##// END OF EJS Templates
stream-requirements: smoother matching in test-treemanifest.t...
marmoute -
r49493:df6df5dd default
parent child Browse files
Show More
@@ -1,898 +1,896 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 p2
133 rev linkrev nodeid p1 p2
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 $ hg serve -p $HGPORT -d --pid-file=hg.pid --errorlog=errors.log
215 $ cat hg.pid >> $DAEMON_PIDS
215 $ cat hg.pid >> $DAEMON_PIDS
216
216
217 Create clone with tree manifests enabled
217 Create clone with tree manifests enabled
218
218
219 $ cd ..
219 $ cd ..
220 $ hg clone --config experimental.treemanifest=1 \
220 $ hg clone --config experimental.treemanifest=1 \
221 > http://localhost:$HGPORT repo-mixed -r 1
221 > http://localhost:$HGPORT repo-mixed -r 1
222 adding changesets
222 adding changesets
223 adding manifests
223 adding manifests
224 adding file changes
224 adding file changes
225 added 2 changesets with 14 changes to 11 files
225 added 2 changesets with 14 changes to 11 files
226 new changesets 5b02a3e8db7e:581ef6037d8b
226 new changesets 5b02a3e8db7e:581ef6037d8b
227 updating to branch default
227 updating to branch default
228 11 files updated, 0 files merged, 0 files removed, 0 files unresolved
228 11 files updated, 0 files merged, 0 files removed, 0 files unresolved
229 $ cd repo-mixed
229 $ cd repo-mixed
230 $ test -d .hg/store/meta
230 $ test -d .hg/store/meta
231 [1]
231 [1]
232 $ hg debugrequires | grep treemanifest
232 $ hg debugrequires | grep treemanifest
233 treemanifest
233 treemanifest
234
234
235 Should be possible to push updates from flat to tree manifest repo
235 Should be possible to push updates from flat to tree manifest repo
236
236
237 $ hg -R ../repo-flat push ssh://user@dummy/repo-mixed
237 $ hg -R ../repo-flat push ssh://user@dummy/repo-mixed
238 pushing to ssh://user@dummy/repo-mixed
238 pushing to ssh://user@dummy/repo-mixed
239 searching for changes
239 searching for changes
240 remote: adding changesets
240 remote: adding changesets
241 remote: adding manifests
241 remote: adding manifests
242 remote: adding file changes
242 remote: adding file changes
243 remote: added 2 changesets with 3 changes to 3 files
243 remote: added 2 changesets with 3 changes to 3 files
244
244
245 Commit should store revlog per directory
245 Commit should store revlog per directory
246
246
247 $ hg co 1
247 $ hg co 1
248 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
248 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
249 $ echo 3 > a
249 $ echo 3 > a
250 $ echo 3 > dir1/a
250 $ echo 3 > dir1/a
251 $ echo 3 > dir1/dir1/a
251 $ echo 3 > dir1/dir1/a
252 $ hg ci -m 'first tree'
252 $ hg ci -m 'first tree'
253 created new head
253 created new head
254 $ find .hg/store/meta | sort
254 $ find .hg/store/meta | sort
255 .hg/store/meta
255 .hg/store/meta
256 .hg/store/meta/dir1
256 .hg/store/meta/dir1
257 .hg/store/meta/dir1/00manifest.i
257 .hg/store/meta/dir1/00manifest.i
258 .hg/store/meta/dir1/dir1
258 .hg/store/meta/dir1/dir1
259 .hg/store/meta/dir1/dir1/00manifest.i
259 .hg/store/meta/dir1/dir1/00manifest.i
260 .hg/store/meta/dir1/dir2
260 .hg/store/meta/dir1/dir2
261 .hg/store/meta/dir1/dir2/00manifest.i
261 .hg/store/meta/dir1/dir2/00manifest.i
262 .hg/store/meta/dir2
262 .hg/store/meta/dir2
263 .hg/store/meta/dir2/00manifest.i
263 .hg/store/meta/dir2/00manifest.i
264
264
265 Merge of two trees
265 Merge of two trees
266
266
267 $ hg co 2
267 $ hg co 2
268 6 files updated, 0 files merged, 0 files removed, 0 files unresolved
268 6 files updated, 0 files merged, 0 files removed, 0 files unresolved
269 $ hg merge 1
269 $ hg merge 1
270 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
270 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
271 (branch merge, don't forget to commit)
271 (branch merge, don't forget to commit)
272 $ hg ci -m 'merge of flat manifests to new tree manifest'
272 $ hg ci -m 'merge of flat manifests to new tree manifest'
273 created new head
273 created new head
274 $ hg diff -r 3
274 $ hg diff -r 3
275
275
276 Parent of tree root manifest should be flat manifest, and two for merge
276 Parent of tree root manifest should be flat manifest, and two for merge
277
277
278 $ hg debugindex -m
278 $ hg debugindex -m
279 rev linkrev nodeid p1 p2
279 rev linkrev nodeid p1 p2
280 0 0 40536115ed9e 000000000000 000000000000
280 0 0 40536115ed9e 000000000000 000000000000
281 1 1 f3376063c255 40536115ed9e 000000000000
281 1 1 f3376063c255 40536115ed9e 000000000000
282 2 2 5d9b9da231a2 40536115ed9e 000000000000
282 2 2 5d9b9da231a2 40536115ed9e 000000000000
283 3 3 d17d663cbd8a 5d9b9da231a2 f3376063c255
283 3 3 d17d663cbd8a 5d9b9da231a2 f3376063c255
284 4 4 51e32a8c60ee f3376063c255 000000000000
284 4 4 51e32a8c60ee f3376063c255 000000000000
285 5 5 cc5baa78b230 5d9b9da231a2 f3376063c255
285 5 5 cc5baa78b230 5d9b9da231a2 f3376063c255
286
286
287
287
288 Status across flat/tree boundary should work
288 Status across flat/tree boundary should work
289
289
290 $ hg status --rev '.^' --rev .
290 $ hg status --rev '.^' --rev .
291 M a
291 M a
292 M dir1/a
292 M dir1/a
293 M dir1/dir1/a
293 M dir1/dir1/a
294
294
295
295
296 Turning off treemanifest config has no effect
296 Turning off treemanifest config has no effect
297
297
298 $ hg debugindex --dir dir1
298 $ hg debugindex --dir dir1
299 rev linkrev nodeid p1 p2
299 rev linkrev nodeid p1 p2
300 0 4 064927a0648a 000000000000 000000000000
300 0 4 064927a0648a 000000000000 000000000000
301 1 5 25ecb8cb8618 000000000000 000000000000
301 1 5 25ecb8cb8618 000000000000 000000000000
302 $ echo 2 > dir1/a
302 $ echo 2 > dir1/a
303 $ hg --config experimental.treemanifest=False ci -qm 'modify dir1/a'
303 $ hg --config experimental.treemanifest=False ci -qm 'modify dir1/a'
304 $ hg debugindex --dir dir1
304 $ hg debugindex --dir dir1
305 rev linkrev nodeid p1 p2
305 rev linkrev nodeid p1 p2
306 0 4 064927a0648a 000000000000 000000000000
306 0 4 064927a0648a 000000000000 000000000000
307 1 5 25ecb8cb8618 000000000000 000000000000
307 1 5 25ecb8cb8618 000000000000 000000000000
308 2 6 5b16163a30c6 25ecb8cb8618 000000000000
308 2 6 5b16163a30c6 25ecb8cb8618 000000000000
309
309
310 Stripping and recovering changes should work
310 Stripping and recovering changes should work
311
311
312 $ hg st --change tip
312 $ hg st --change tip
313 M dir1/a
313 M dir1/a
314 $ hg --config extensions.strip= strip tip
314 $ hg --config extensions.strip= strip tip
315 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
315 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
316 saved backup bundle to $TESTTMP/repo-mixed/.hg/strip-backup/51cfd7b1e13b-78a2f3ed-backup.hg
317 $ hg debugindex --dir dir1
317 $ hg debugindex --dir dir1
318 rev linkrev nodeid p1 p2
318 rev linkrev nodeid p1 p2
319 0 4 064927a0648a 000000000000 000000000000
319 0 4 064927a0648a 000000000000 000000000000
320 1 5 25ecb8cb8618 000000000000 000000000000
320 1 5 25ecb8cb8618 000000000000 000000000000
321
321
322 #if repobundlerepo
322 #if repobundlerepo
323 $ hg incoming .hg/strip-backup/*
323 $ hg incoming .hg/strip-backup/*
324 comparing with .hg/strip-backup/*-backup.hg (glob)
324 comparing with .hg/strip-backup/*-backup.hg (glob)
325 searching for changes
325 searching for changes
326 changeset: 6:51cfd7b1e13b
326 changeset: 6:51cfd7b1e13b
327 tag: tip
327 tag: tip
328 user: test
328 user: test
329 date: Thu Jan 01 00:00:00 1970 +0000
329 date: Thu Jan 01 00:00:00 1970 +0000
330 summary: modify dir1/a
330 summary: modify dir1/a
331
331
332 #endif
332 #endif
333
333
334 $ hg unbundle .hg/strip-backup/*
334 $ hg unbundle .hg/strip-backup/*
335 adding changesets
335 adding changesets
336 adding manifests
336 adding manifests
337 adding file changes
337 adding file changes
338 added 1 changesets with 1 changes to 1 files
338 added 1 changesets with 1 changes to 1 files
339 new changesets 51cfd7b1e13b (1 drafts)
339 new changesets 51cfd7b1e13b (1 drafts)
340 (run 'hg update' to get a working copy)
340 (run 'hg update' to get a working copy)
341 $ hg --config extensions.strip= strip tip
341 $ hg --config extensions.strip= strip tip
342 saved backup bundle to $TESTTMP/repo-mixed/.hg/strip-backup/*-backup.hg (glob)
342 saved backup bundle to $TESTTMP/repo-mixed/.hg/strip-backup/*-backup.hg (glob)
343 $ hg unbundle -q .hg/strip-backup/*
343 $ hg unbundle -q .hg/strip-backup/*
344 $ hg debugindex --dir dir1
344 $ hg debugindex --dir dir1
345 rev linkrev nodeid p1 p2
345 rev linkrev nodeid p1 p2
346 0 4 064927a0648a 000000000000 000000000000
346 0 4 064927a0648a 000000000000 000000000000
347 1 5 25ecb8cb8618 000000000000 000000000000
347 1 5 25ecb8cb8618 000000000000 000000000000
348 2 6 5b16163a30c6 25ecb8cb8618 000000000000
348 2 6 5b16163a30c6 25ecb8cb8618 000000000000
349 $ hg st --change tip
349 $ hg st --change tip
350 M dir1/a
350 M dir1/a
351
351
352 Shelving and unshelving should work
352 Shelving and unshelving should work
353
353
354 $ echo foo >> dir1/a
354 $ echo foo >> dir1/a
355 $ hg shelve
355 $ hg shelve
356 shelved as default
356 shelved as default
357 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
357 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
358 $ hg unshelve
358 $ hg unshelve
359 unshelving change 'default'
359 unshelving change 'default'
360 $ hg diff --nodates
360 $ hg diff --nodates
361 diff -r 708a273da119 dir1/a
361 diff -r 708a273da119 dir1/a
362 --- a/dir1/a
362 --- a/dir1/a
363 +++ b/dir1/a
363 +++ b/dir1/a
364 @@ -1,1 +1,2 @@
364 @@ -1,1 +1,2 @@
365 1
365 1
366 +foo
366 +foo
367
367
368 Pushing from treemanifest repo to an empty repo makes that a treemanifest repo
368 Pushing from treemanifest repo to an empty repo makes that a treemanifest repo
369
369
370 $ cd ..
370 $ cd ..
371 $ hg init empty-repo
371 $ hg init empty-repo
372 $ cat << EOF >> empty-repo/.hg/hgrc
372 $ cat << EOF >> empty-repo/.hg/hgrc
373 > [experimental]
373 > [experimental]
374 > changegroup3=yes
374 > changegroup3=yes
375 > EOF
375 > EOF
376 $ hg debugrequires -R empty-repo | grep treemanifest
376 $ hg debugrequires -R empty-repo | grep treemanifest
377 [1]
377 [1]
378 $ hg push -R repo -r 0 empty-repo
378 $ hg push -R repo -r 0 empty-repo
379 pushing to empty-repo
379 pushing to empty-repo
380 searching for changes
380 searching for changes
381 adding changesets
381 adding changesets
382 adding manifests
382 adding manifests
383 adding file changes
383 adding file changes
384 added 1 changesets with 2 changes to 2 files
384 added 1 changesets with 2 changes to 2 files
385 $ hg debugrequires -R empty-repo | grep treemanifest
385 $ hg debugrequires -R empty-repo | grep treemanifest
386 treemanifest
386 treemanifest
387
387
388 Pushing to an empty repo works
388 Pushing to an empty repo works
389
389
390 $ hg --config experimental.treemanifest=1 init clone
390 $ hg --config experimental.treemanifest=1 init clone
391 $ hg debugrequires -R clone | grep treemanifest
391 $ hg debugrequires -R clone | grep treemanifest
392 treemanifest
392 treemanifest
393 $ hg push -R repo clone
393 $ hg push -R repo clone
394 pushing to clone
394 pushing to clone
395 searching for changes
395 searching for changes
396 adding changesets
396 adding changesets
397 adding manifests
397 adding manifests
398 adding file changes
398 adding file changes
399 added 11 changesets with 15 changes to 10 files (+3 heads)
399 added 11 changesets with 15 changes to 10 files (+3 heads)
400 $ hg debugrequires -R clone | grep treemanifest
400 $ hg debugrequires -R clone | grep treemanifest
401 treemanifest
401 treemanifest
402 $ hg -R clone verify
402 $ hg -R clone verify
403 checking changesets
403 checking changesets
404 checking manifests
404 checking manifests
405 checking directory manifests
405 checking directory manifests
406 crosschecking files in changesets and manifests
406 crosschecking files in changesets and manifests
407 checking files
407 checking files
408 checked 11 changesets with 15 changes to 10 files
408 checked 11 changesets with 15 changes to 10 files
409
409
410 Create deeper repo with tree manifests.
410 Create deeper repo with tree manifests.
411
411
412 $ hg --config experimental.treemanifest=True init deeprepo
412 $ hg --config experimental.treemanifest=True init deeprepo
413 $ cd deeprepo
413 $ cd deeprepo
414
414
415 $ mkdir .A
415 $ mkdir .A
416 $ mkdir b
416 $ mkdir b
417 $ mkdir b/bar
417 $ mkdir b/bar
418 $ mkdir b/bar/orange
418 $ mkdir b/bar/orange
419 $ mkdir b/bar/orange/fly
419 $ mkdir b/bar/orange/fly
420 $ mkdir b/foo
420 $ mkdir b/foo
421 $ mkdir b/foo/apple
421 $ mkdir b/foo/apple
422 $ mkdir b/foo/apple/bees
422 $ mkdir b/foo/apple/bees
423
423
424 $ touch .A/one.txt
424 $ touch .A/one.txt
425 $ touch .A/two.txt
425 $ touch .A/two.txt
426 $ touch b/bar/fruits.txt
426 $ touch b/bar/fruits.txt
427 $ touch b/bar/orange/fly/gnat.py
427 $ touch b/bar/orange/fly/gnat.py
428 $ touch b/bar/orange/fly/housefly.txt
428 $ touch b/bar/orange/fly/housefly.txt
429 $ touch b/foo/apple/bees/flower.py
429 $ touch b/foo/apple/bees/flower.py
430 $ touch c.txt
430 $ touch c.txt
431 $ touch d.py
431 $ touch d.py
432
432
433 $ hg ci -Aqm 'initial'
433 $ hg ci -Aqm 'initial'
434
434
435 $ echo >> .A/one.txt
435 $ echo >> .A/one.txt
436 $ echo >> .A/two.txt
436 $ echo >> .A/two.txt
437 $ echo >> b/bar/fruits.txt
437 $ echo >> b/bar/fruits.txt
438 $ echo >> b/bar/orange/fly/gnat.py
438 $ echo >> b/bar/orange/fly/gnat.py
439 $ echo >> b/bar/orange/fly/housefly.txt
439 $ echo >> b/bar/orange/fly/housefly.txt
440 $ echo >> b/foo/apple/bees/flower.py
440 $ echo >> b/foo/apple/bees/flower.py
441 $ echo >> c.txt
441 $ echo >> c.txt
442 $ echo >> d.py
442 $ echo >> d.py
443 $ hg ci -Aqm 'second'
443 $ hg ci -Aqm 'second'
444
444
445 We'll see that visitdir works by removing some treemanifest revlogs and running
445 We'll see that visitdir works by removing some treemanifest revlogs and running
446 the files command with various parameters.
446 the files command with various parameters.
447
447
448 Test files from the root.
448 Test files from the root.
449
449
450 $ hg files -r .
450 $ hg files -r .
451 .A/one.txt
451 .A/one.txt
452 .A/two.txt
452 .A/two.txt
453 b/bar/fruits.txt
453 b/bar/fruits.txt
454 b/bar/orange/fly/gnat.py
454 b/bar/orange/fly/gnat.py
455 b/bar/orange/fly/housefly.txt
455 b/bar/orange/fly/housefly.txt
456 b/foo/apple/bees/flower.py
456 b/foo/apple/bees/flower.py
457 c.txt
457 c.txt
458 d.py
458 d.py
459
459
460 Excludes with a glob should not exclude everything from the glob's root
460 Excludes with a glob should not exclude everything from the glob's root
461
461
462 $ hg files -r . -X 'b/fo?' b
462 $ hg files -r . -X 'b/fo?' b
463 b/bar/fruits.txt
463 b/bar/fruits.txt
464 b/bar/orange/fly/gnat.py
464 b/bar/orange/fly/gnat.py
465 b/bar/orange/fly/housefly.txt
465 b/bar/orange/fly/housefly.txt
466 $ cp -R .hg/store .hg/store-copy
466 $ cp -R .hg/store .hg/store-copy
467
467
468 Test files for a subdirectory.
468 Test files for a subdirectory.
469
469
470 #if reporevlogstore
470 #if reporevlogstore
471 $ rm -r .hg/store/meta/~2e_a
471 $ rm -r .hg/store/meta/~2e_a
472 #endif
472 #endif
473 #if reposimplestore
473 #if reposimplestore
474 $ rm -r .hg/store/meta/._a
474 $ rm -r .hg/store/meta/._a
475 #endif
475 #endif
476 $ hg files -r . b
476 $ hg files -r . b
477 b/bar/fruits.txt
477 b/bar/fruits.txt
478 b/bar/orange/fly/gnat.py
478 b/bar/orange/fly/gnat.py
479 b/bar/orange/fly/housefly.txt
479 b/bar/orange/fly/housefly.txt
480 b/foo/apple/bees/flower.py
480 b/foo/apple/bees/flower.py
481 $ hg diff -r '.^' -r . --stat b
481 $ hg diff -r '.^' -r . --stat b
482 b/bar/fruits.txt | 1 +
482 b/bar/fruits.txt | 1 +
483 b/bar/orange/fly/gnat.py | 1 +
483 b/bar/orange/fly/gnat.py | 1 +
484 b/bar/orange/fly/housefly.txt | 1 +
484 b/bar/orange/fly/housefly.txt | 1 +
485 b/foo/apple/bees/flower.py | 1 +
485 b/foo/apple/bees/flower.py | 1 +
486 4 files changed, 4 insertions(+), 0 deletions(-)
486 4 files changed, 4 insertions(+), 0 deletions(-)
487 $ cp -R .hg/store-copy/. .hg/store
487 $ cp -R .hg/store-copy/. .hg/store
488
488
489 Test files with just includes and excludes.
489 Test files with just includes and excludes.
490
490
491 #if reporevlogstore
491 #if reporevlogstore
492 $ rm -r .hg/store/meta/~2e_a
492 $ rm -r .hg/store/meta/~2e_a
493 #endif
493 #endif
494 #if reposimplestore
494 #if reposimplestore
495 $ rm -r .hg/store/meta/._a
495 $ rm -r .hg/store/meta/._a
496 #endif
496 #endif
497 $ rm -r .hg/store/meta/b/bar/orange/fly
497 $ rm -r .hg/store/meta/b/bar/orange/fly
498 $ rm -r .hg/store/meta/b/foo/apple/bees
498 $ rm -r .hg/store/meta/b/foo/apple/bees
499 $ hg files -r . -I path:b/bar -X path:b/bar/orange/fly -I path:b/foo -X path:b/foo/apple/bees
499 $ hg files -r . -I path:b/bar -X path:b/bar/orange/fly -I path:b/foo -X path:b/foo/apple/bees
500 b/bar/fruits.txt
500 b/bar/fruits.txt
501 $ 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
501 $ 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
502 b/bar/fruits.txt | 1 +
502 b/bar/fruits.txt | 1 +
503 1 files changed, 1 insertions(+), 0 deletions(-)
503 1 files changed, 1 insertions(+), 0 deletions(-)
504 $ cp -R .hg/store-copy/. .hg/store
504 $ cp -R .hg/store-copy/. .hg/store
505
505
506 Test files for a subdirectory, excluding a directory within it.
506 Test files for a subdirectory, excluding a directory within it.
507
507
508 #if reporevlogstore
508 #if reporevlogstore
509 $ rm -r .hg/store/meta/~2e_a
509 $ rm -r .hg/store/meta/~2e_a
510 #endif
510 #endif
511 #if reposimplestore
511 #if reposimplestore
512 $ rm -r .hg/store/meta/._a
512 $ rm -r .hg/store/meta/._a
513 #endif
513 #endif
514 $ rm -r .hg/store/meta/b/foo
514 $ rm -r .hg/store/meta/b/foo
515 $ hg files -r . -X path:b/foo b
515 $ hg files -r . -X path:b/foo b
516 b/bar/fruits.txt
516 b/bar/fruits.txt
517 b/bar/orange/fly/gnat.py
517 b/bar/orange/fly/gnat.py
518 b/bar/orange/fly/housefly.txt
518 b/bar/orange/fly/housefly.txt
519 $ hg diff -r '.^' -r . --stat -X path:b/foo b
519 $ hg diff -r '.^' -r . --stat -X path:b/foo b
520 b/bar/fruits.txt | 1 +
520 b/bar/fruits.txt | 1 +
521 b/bar/orange/fly/gnat.py | 1 +
521 b/bar/orange/fly/gnat.py | 1 +
522 b/bar/orange/fly/housefly.txt | 1 +
522 b/bar/orange/fly/housefly.txt | 1 +
523 3 files changed, 3 insertions(+), 0 deletions(-)
523 3 files changed, 3 insertions(+), 0 deletions(-)
524 $ cp -R .hg/store-copy/. .hg/store
524 $ cp -R .hg/store-copy/. .hg/store
525
525
526 Test files for a sub directory, including only a directory within it, and
526 Test files for a sub directory, including only a directory within it, and
527 including an unrelated directory.
527 including an unrelated directory.
528
528
529 #if reporevlogstore
529 #if reporevlogstore
530 $ rm -r .hg/store/meta/~2e_a
530 $ rm -r .hg/store/meta/~2e_a
531 #endif
531 #endif
532 #if reposimplestore
532 #if reposimplestore
533 $ rm -r .hg/store/meta/._a
533 $ rm -r .hg/store/meta/._a
534 #endif
534 #endif
535 $ rm -r .hg/store/meta/b/foo
535 $ rm -r .hg/store/meta/b/foo
536 $ hg files -r . -I path:b/bar/orange -I path:a b
536 $ hg files -r . -I path:b/bar/orange -I path:a b
537 b/bar/orange/fly/gnat.py
537 b/bar/orange/fly/gnat.py
538 b/bar/orange/fly/housefly.txt
538 b/bar/orange/fly/housefly.txt
539 $ hg diff -r '.^' -r . --stat -I path:b/bar/orange -I path:a b
539 $ hg diff -r '.^' -r . --stat -I path:b/bar/orange -I path:a b
540 b/bar/orange/fly/gnat.py | 1 +
540 b/bar/orange/fly/gnat.py | 1 +
541 b/bar/orange/fly/housefly.txt | 1 +
541 b/bar/orange/fly/housefly.txt | 1 +
542 2 files changed, 2 insertions(+), 0 deletions(-)
542 2 files changed, 2 insertions(+), 0 deletions(-)
543 $ cp -R .hg/store-copy/. .hg/store
543 $ cp -R .hg/store-copy/. .hg/store
544
544
545 Test files for a pattern, including a directory, and excluding a directory
545 Test files for a pattern, including a directory, and excluding a directory
546 within that.
546 within that.
547
547
548 #if reporevlogstore
548 #if reporevlogstore
549 $ rm -r .hg/store/meta/~2e_a
549 $ rm -r .hg/store/meta/~2e_a
550 #endif
550 #endif
551 #if reposimplestore
551 #if reposimplestore
552 $ rm -r .hg/store/meta/._a
552 $ rm -r .hg/store/meta/._a
553 #endif
553 #endif
554 $ rm -r .hg/store/meta/b/foo
554 $ rm -r .hg/store/meta/b/foo
555 $ rm -r .hg/store/meta/b/bar/orange
555 $ rm -r .hg/store/meta/b/bar/orange
556 $ hg files -r . glob:**.txt -I path:b/bar -X path:b/bar/orange
556 $ hg files -r . glob:**.txt -I path:b/bar -X path:b/bar/orange
557 b/bar/fruits.txt
557 b/bar/fruits.txt
558 $ hg diff -r '.^' -r . --stat glob:**.txt -I path:b/bar -X path:b/bar/orange
558 $ hg diff -r '.^' -r . --stat glob:**.txt -I path:b/bar -X path:b/bar/orange
559 b/bar/fruits.txt | 1 +
559 b/bar/fruits.txt | 1 +
560 1 files changed, 1 insertions(+), 0 deletions(-)
560 1 files changed, 1 insertions(+), 0 deletions(-)
561 $ cp -R .hg/store-copy/. .hg/store
561 $ cp -R .hg/store-copy/. .hg/store
562
562
563 Add some more changes to the deep repo
563 Add some more changes to the deep repo
564 $ echo narf >> b/bar/fruits.txt
564 $ echo narf >> b/bar/fruits.txt
565 $ hg ci -m narf
565 $ hg ci -m narf
566 $ echo troz >> b/bar/orange/fly/gnat.py
566 $ echo troz >> b/bar/orange/fly/gnat.py
567 $ hg ci -m troz
567 $ hg ci -m troz
568
568
569 Verify works
569 Verify works
570 $ hg verify
570 $ hg verify
571 checking changesets
571 checking changesets
572 checking manifests
572 checking manifests
573 checking directory manifests
573 checking directory manifests
574 crosschecking files in changesets and manifests
574 crosschecking files in changesets and manifests
575 checking files
575 checking files
576 checked 4 changesets with 18 changes to 8 files
576 checked 4 changesets with 18 changes to 8 files
577
577
578 #if repofncache
578 #if repofncache
579 Dirlogs are included in fncache
579 Dirlogs are included in fncache
580 $ grep meta/.A/00manifest.i .hg/store/fncache
580 $ grep meta/.A/00manifest.i .hg/store/fncache
581 meta/.A/00manifest.i
581 meta/.A/00manifest.i
582
582
583 Rebuilt fncache includes dirlogs
583 Rebuilt fncache includes dirlogs
584 $ rm .hg/store/fncache
584 $ rm .hg/store/fncache
585 $ hg debugrebuildfncache
585 $ hg debugrebuildfncache
586 adding data/.A/one.txt.i
586 adding data/.A/one.txt.i
587 adding data/.A/two.txt.i
587 adding data/.A/two.txt.i
588 adding data/b/bar/fruits.txt.i
588 adding data/b/bar/fruits.txt.i
589 adding data/b/bar/orange/fly/gnat.py.i
589 adding data/b/bar/orange/fly/gnat.py.i
590 adding data/b/bar/orange/fly/housefly.txt.i
590 adding data/b/bar/orange/fly/housefly.txt.i
591 adding data/b/foo/apple/bees/flower.py.i
591 adding data/b/foo/apple/bees/flower.py.i
592 adding data/c.txt.i
592 adding data/c.txt.i
593 adding data/d.py.i
593 adding data/d.py.i
594 adding meta/.A/00manifest.i
594 adding meta/.A/00manifest.i
595 adding meta/b/00manifest.i
595 adding meta/b/00manifest.i
596 adding meta/b/bar/00manifest.i
596 adding meta/b/bar/00manifest.i
597 adding meta/b/bar/orange/00manifest.i
597 adding meta/b/bar/orange/00manifest.i
598 adding meta/b/bar/orange/fly/00manifest.i
598 adding meta/b/bar/orange/fly/00manifest.i
599 adding meta/b/foo/00manifest.i
599 adding meta/b/foo/00manifest.i
600 adding meta/b/foo/apple/00manifest.i
600 adding meta/b/foo/apple/00manifest.i
601 adding meta/b/foo/apple/bees/00manifest.i
601 adding meta/b/foo/apple/bees/00manifest.i
602 16 items added, 0 removed from fncache
602 16 items added, 0 removed from fncache
603 #endif
603 #endif
604
604
605 Finish first server
605 Finish first server
606 $ killdaemons.py
606 $ killdaemons.py
607
607
608 Back up the recently added revlogs
608 Back up the recently added revlogs
609 $ cp -R .hg/store .hg/store-newcopy
609 $ cp -R .hg/store .hg/store-newcopy
610
610
611 Verify reports missing dirlog
611 Verify reports missing dirlog
612 $ rm .hg/store/meta/b/00manifest.*
612 $ rm .hg/store/meta/b/00manifest.*
613 $ hg verify
613 $ hg verify
614 checking changesets
614 checking changesets
615 checking manifests
615 checking manifests
616 checking directory manifests
616 checking directory manifests
617 0: empty or missing b/
617 0: empty or missing b/
618 b/@0: parent-directory manifest refers to unknown revision 67688a370455
618 b/@0: parent-directory manifest refers to unknown revision 67688a370455
619 b/@1: parent-directory manifest refers to unknown revision f065da70369e
619 b/@1: parent-directory manifest refers to unknown revision f065da70369e
620 b/@2: parent-directory manifest refers to unknown revision ac0d30948e0b
620 b/@2: parent-directory manifest refers to unknown revision ac0d30948e0b
621 b/@3: parent-directory manifest refers to unknown revision 367152e6af28
621 b/@3: parent-directory manifest refers to unknown revision 367152e6af28
622 warning: orphan data file 'meta/b/bar/00manifest.i' (reporevlogstore !)
622 warning: orphan data file 'meta/b/bar/00manifest.i' (reporevlogstore !)
623 warning: orphan data file 'meta/b/bar/orange/00manifest.i' (reporevlogstore !)
623 warning: orphan data file 'meta/b/bar/orange/00manifest.i' (reporevlogstore !)
624 warning: orphan data file 'meta/b/bar/orange/fly/00manifest.i' (reporevlogstore !)
624 warning: orphan data file 'meta/b/bar/orange/fly/00manifest.i' (reporevlogstore !)
625 warning: orphan data file 'meta/b/foo/00manifest.i' (reporevlogstore !)
625 warning: orphan data file 'meta/b/foo/00manifest.i' (reporevlogstore !)
626 warning: orphan data file 'meta/b/foo/apple/00manifest.i' (reporevlogstore !)
626 warning: orphan data file 'meta/b/foo/apple/00manifest.i' (reporevlogstore !)
627 warning: orphan data file 'meta/b/foo/apple/bees/00manifest.i' (reporevlogstore !)
627 warning: orphan data file 'meta/b/foo/apple/bees/00manifest.i' (reporevlogstore !)
628 crosschecking files in changesets and manifests
628 crosschecking files in changesets and manifests
629 b/bar/fruits.txt@0: in changeset but not in manifest
629 b/bar/fruits.txt@0: in changeset but not in manifest
630 b/bar/orange/fly/gnat.py@0: in changeset but not in manifest
630 b/bar/orange/fly/gnat.py@0: in changeset but not in manifest
631 b/bar/orange/fly/housefly.txt@0: in changeset but not in manifest
631 b/bar/orange/fly/housefly.txt@0: in changeset but not in manifest
632 b/foo/apple/bees/flower.py@0: in changeset but not in manifest
632 b/foo/apple/bees/flower.py@0: in changeset but not in manifest
633 checking files
633 checking files
634 checked 4 changesets with 18 changes to 8 files
634 checked 4 changesets with 18 changes to 8 files
635 6 warnings encountered! (reporevlogstore !)
635 6 warnings encountered! (reporevlogstore !)
636 9 integrity errors encountered!
636 9 integrity errors encountered!
637 (first damaged changeset appears to be 0)
637 (first damaged changeset appears to be 0)
638 [1]
638 [1]
639 $ cp -R .hg/store-newcopy/. .hg/store
639 $ cp -R .hg/store-newcopy/. .hg/store
640
640
641 Verify reports missing dirlog entry
641 Verify reports missing dirlog entry
642 $ mv -f .hg/store-copy/meta/b/00manifest.* .hg/store/meta/b/
642 $ mv -f .hg/store-copy/meta/b/00manifest.* .hg/store/meta/b/
643 $ hg verify
643 $ hg verify
644 checking changesets
644 checking changesets
645 checking manifests
645 checking manifests
646 checking directory manifests
646 checking directory manifests
647 b/@2: parent-directory manifest refers to unknown revision ac0d30948e0b
647 b/@2: parent-directory manifest refers to unknown revision ac0d30948e0b
648 b/@3: parent-directory manifest refers to unknown revision 367152e6af28
648 b/@3: parent-directory manifest refers to unknown revision 367152e6af28
649 b/bar/@?: rev 2 points to unexpected changeset 2
649 b/bar/@?: rev 2 points to unexpected changeset 2
650 b/bar/@?: 44d7e1146e0d not in parent-directory manifest
650 b/bar/@?: 44d7e1146e0d not in parent-directory manifest
651 b/bar/@?: rev 3 points to unexpected changeset 3
651 b/bar/@?: rev 3 points to unexpected changeset 3
652 b/bar/@?: 70b10c6b17b7 not in parent-directory manifest
652 b/bar/@?: 70b10c6b17b7 not in parent-directory manifest
653 b/bar/orange/@?: rev 2 points to unexpected changeset 3
653 b/bar/orange/@?: rev 2 points to unexpected changeset 3
654 (expected None)
654 (expected None)
655 b/bar/orange/fly/@?: rev 2 points to unexpected changeset 3
655 b/bar/orange/fly/@?: rev 2 points to unexpected changeset 3
656 (expected None)
656 (expected None)
657 crosschecking files in changesets and manifests
657 crosschecking files in changesets and manifests
658 checking files
658 checking files
659 checked 4 changesets with 18 changes to 8 files
659 checked 4 changesets with 18 changes to 8 files
660 2 warnings encountered!
660 2 warnings encountered!
661 8 integrity errors encountered!
661 8 integrity errors encountered!
662 (first damaged changeset appears to be 2)
662 (first damaged changeset appears to be 2)
663 [1]
663 [1]
664 $ cp -R .hg/store-newcopy/. .hg/store
664 $ cp -R .hg/store-newcopy/. .hg/store
665
665
666 Test cloning a treemanifest repo over http.
666 Test cloning a treemanifest repo over http.
667 $ hg serve -p $HGPORT -d --pid-file=hg.pid --errorlog=errors.log
667 $ hg serve -p $HGPORT -d --pid-file=hg.pid --errorlog=errors.log
668 $ cat hg.pid >> $DAEMON_PIDS
668 $ cat hg.pid >> $DAEMON_PIDS
669 $ cd ..
669 $ cd ..
670 We can clone even with the knob turned off and we'll get a treemanifest repo.
670 We can clone even with the knob turned off and we'll get a treemanifest repo.
671 $ hg clone --config experimental.treemanifest=False \
671 $ hg clone --config experimental.treemanifest=False \
672 > --config experimental.changegroup3=True \
672 > --config experimental.changegroup3=True \
673 > http://localhost:$HGPORT deepclone
673 > http://localhost:$HGPORT deepclone
674 requesting all changes
674 requesting all changes
675 adding changesets
675 adding changesets
676 adding manifests
676 adding manifests
677 adding file changes
677 adding file changes
678 added 4 changesets with 18 changes to 8 files
678 added 4 changesets with 18 changes to 8 files
679 new changesets 775704be6f52:523e5c631710
679 new changesets 775704be6f52:523e5c631710
680 updating to branch default
680 updating to branch default
681 8 files updated, 0 files merged, 0 files removed, 0 files unresolved
681 8 files updated, 0 files merged, 0 files removed, 0 files unresolved
682 No server errors.
682 No server errors.
683 $ cat deeprepo/errors.log
683 $ cat deeprepo/errors.log
684 requires got updated to include treemanifest
684 requires got updated to include treemanifest
685 $ hg debugrequires -R deepclone | grep treemanifest
685 $ hg debugrequires -R deepclone | grep treemanifest
686 treemanifest
686 treemanifest
687 Tree manifest revlogs exist.
687 Tree manifest revlogs exist.
688 $ find deepclone/.hg/store/meta | sort
688 $ find deepclone/.hg/store/meta | sort
689 deepclone/.hg/store/meta
689 deepclone/.hg/store/meta
690 deepclone/.hg/store/meta/._a (reposimplestore !)
690 deepclone/.hg/store/meta/._a (reposimplestore !)
691 deepclone/.hg/store/meta/._a/00manifest.i (reposimplestore !)
691 deepclone/.hg/store/meta/._a/00manifest.i (reposimplestore !)
692 deepclone/.hg/store/meta/b
692 deepclone/.hg/store/meta/b
693 deepclone/.hg/store/meta/b/00manifest.i
693 deepclone/.hg/store/meta/b/00manifest.i
694 deepclone/.hg/store/meta/b/bar
694 deepclone/.hg/store/meta/b/bar
695 deepclone/.hg/store/meta/b/bar/00manifest.i
695 deepclone/.hg/store/meta/b/bar/00manifest.i
696 deepclone/.hg/store/meta/b/bar/orange
696 deepclone/.hg/store/meta/b/bar/orange
697 deepclone/.hg/store/meta/b/bar/orange/00manifest.i
697 deepclone/.hg/store/meta/b/bar/orange/00manifest.i
698 deepclone/.hg/store/meta/b/bar/orange/fly
698 deepclone/.hg/store/meta/b/bar/orange/fly
699 deepclone/.hg/store/meta/b/bar/orange/fly/00manifest.i
699 deepclone/.hg/store/meta/b/bar/orange/fly/00manifest.i
700 deepclone/.hg/store/meta/b/foo
700 deepclone/.hg/store/meta/b/foo
701 deepclone/.hg/store/meta/b/foo/00manifest.i
701 deepclone/.hg/store/meta/b/foo/00manifest.i
702 deepclone/.hg/store/meta/b/foo/apple
702 deepclone/.hg/store/meta/b/foo/apple
703 deepclone/.hg/store/meta/b/foo/apple/00manifest.i
703 deepclone/.hg/store/meta/b/foo/apple/00manifest.i
704 deepclone/.hg/store/meta/b/foo/apple/bees
704 deepclone/.hg/store/meta/b/foo/apple/bees
705 deepclone/.hg/store/meta/b/foo/apple/bees/00manifest.i
705 deepclone/.hg/store/meta/b/foo/apple/bees/00manifest.i
706 deepclone/.hg/store/meta/~2e_a (reporevlogstore !)
706 deepclone/.hg/store/meta/~2e_a (reporevlogstore !)
707 deepclone/.hg/store/meta/~2e_a/00manifest.i (reporevlogstore !)
707 deepclone/.hg/store/meta/~2e_a/00manifest.i (reporevlogstore !)
708 Verify passes.
708 Verify passes.
709 $ cd deepclone
709 $ cd deepclone
710 $ hg verify
710 $ hg verify
711 checking changesets
711 checking changesets
712 checking manifests
712 checking manifests
713 checking directory manifests
713 checking directory manifests
714 crosschecking files in changesets and manifests
714 crosschecking files in changesets and manifests
715 checking files
715 checking files
716 checked 4 changesets with 18 changes to 8 files
716 checked 4 changesets with 18 changes to 8 files
717 $ cd ..
717 $ cd ..
718
718
719 #if reporevlogstore
719 #if reporevlogstore
720 Create clones using old repo formats to use in later tests
720 Create clones using old repo formats to use in later tests
721 $ hg clone --config format.usestore=False \
721 $ hg clone --config format.usestore=False \
722 > --config experimental.changegroup3=True \
722 > --config experimental.changegroup3=True \
723 > http://localhost:$HGPORT deeprepo-basicstore
723 > http://localhost:$HGPORT deeprepo-basicstore
724 requesting all changes
724 requesting all changes
725 adding changesets
725 adding changesets
726 adding manifests
726 adding manifests
727 adding file changes
727 adding file changes
728 added 4 changesets with 18 changes to 8 files
728 added 4 changesets with 18 changes to 8 files
729 new changesets 775704be6f52:523e5c631710
729 new changesets 775704be6f52:523e5c631710
730 updating to branch default
730 updating to branch default
731 8 files updated, 0 files merged, 0 files removed, 0 files unresolved
731 8 files updated, 0 files merged, 0 files removed, 0 files unresolved
732 $ cd deeprepo-basicstore
732 $ cd deeprepo-basicstore
733 $ hg debugrequires | grep store
733 $ hg debugrequires | grep store
734 [1]
734 [1]
735 $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --errorlog=errors.log
735 $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --errorlog=errors.log
736 $ cat hg.pid >> $DAEMON_PIDS
736 $ cat hg.pid >> $DAEMON_PIDS
737 $ cd ..
737 $ cd ..
738 $ hg clone --config format.usefncache=False \
738 $ hg clone --config format.usefncache=False \
739 > --config experimental.changegroup3=True \
739 > --config experimental.changegroup3=True \
740 > http://localhost:$HGPORT deeprepo-encodedstore
740 > http://localhost:$HGPORT deeprepo-encodedstore
741 requesting all changes
741 requesting all changes
742 adding changesets
742 adding changesets
743 adding manifests
743 adding manifests
744 adding file changes
744 adding file changes
745 added 4 changesets with 18 changes to 8 files
745 added 4 changesets with 18 changes to 8 files
746 new changesets 775704be6f52:523e5c631710
746 new changesets 775704be6f52:523e5c631710
747 updating to branch default
747 updating to branch default
748 8 files updated, 0 files merged, 0 files removed, 0 files unresolved
748 8 files updated, 0 files merged, 0 files removed, 0 files unresolved
749 $ cd deeprepo-encodedstore
749 $ cd deeprepo-encodedstore
750 $ hg debugrequires | grep fncache
750 $ hg debugrequires | grep fncache
751 [1]
751 [1]
752 $ hg serve -p $HGPORT2 -d --pid-file=hg.pid --errorlog=errors.log
752 $ hg serve -p $HGPORT2 -d --pid-file=hg.pid --errorlog=errors.log
753 $ cat hg.pid >> $DAEMON_PIDS
753 $ cat hg.pid >> $DAEMON_PIDS
754 $ cd ..
754 $ cd ..
755
755
756 Local clone with basicstore
756 Local clone with basicstore
757 $ hg clone -U deeprepo-basicstore local-clone-basicstore
757 $ hg clone -U deeprepo-basicstore local-clone-basicstore
758 $ hg -R local-clone-basicstore verify
758 $ hg -R local-clone-basicstore verify
759 checking changesets
759 checking changesets
760 checking manifests
760 checking manifests
761 checking directory manifests
761 checking directory manifests
762 crosschecking files in changesets and manifests
762 crosschecking files in changesets and manifests
763 checking files
763 checking files
764 checked 4 changesets with 18 changes to 8 files
764 checked 4 changesets with 18 changes to 8 files
765
765
766 Local clone with encodedstore
766 Local clone with encodedstore
767 $ hg clone -U deeprepo-encodedstore local-clone-encodedstore
767 $ hg clone -U deeprepo-encodedstore local-clone-encodedstore
768 $ hg -R local-clone-encodedstore verify
768 $ hg -R local-clone-encodedstore verify
769 checking changesets
769 checking changesets
770 checking manifests
770 checking manifests
771 checking directory manifests
771 checking directory manifests
772 crosschecking files in changesets and manifests
772 crosschecking files in changesets and manifests
773 checking files
773 checking files
774 checked 4 changesets with 18 changes to 8 files
774 checked 4 changesets with 18 changes to 8 files
775
775
776 Local clone with fncachestore
776 Local clone with fncachestore
777 $ hg clone -U deeprepo local-clone-fncachestore
777 $ hg clone -U deeprepo local-clone-fncachestore
778 $ hg -R local-clone-fncachestore verify
778 $ hg -R local-clone-fncachestore verify
779 checking changesets
779 checking changesets
780 checking manifests
780 checking manifests
781 checking directory manifests
781 checking directory manifests
782 crosschecking files in changesets and manifests
782 crosschecking files in changesets and manifests
783 checking files
783 checking files
784 checked 4 changesets with 18 changes to 8 files
784 checked 4 changesets with 18 changes to 8 files
785
785
786 Stream clone with basicstore
786 Stream clone with basicstore
787 $ hg clone --config experimental.changegroup3=True --stream -U \
787 $ hg clone --config experimental.changegroup3=True --stream -U \
788 > http://localhost:$HGPORT1 stream-clone-basicstore
788 > http://localhost:$HGPORT1 stream-clone-basicstore
789 streaming all changes
789 streaming all changes
790 28 files to transfer, * of data (glob)
790 28 files to transfer, * of data (glob)
791 transferred * in * seconds (*) (glob)
791 transferred * in * seconds (*) (glob)
792 $ hg -R stream-clone-basicstore verify
792 $ hg -R stream-clone-basicstore verify
793 checking changesets
793 checking changesets
794 checking manifests
794 checking manifests
795 checking directory manifests
795 checking directory manifests
796 crosschecking files in changesets and manifests
796 crosschecking files in changesets and manifests
797 checking files
797 checking files
798 checked 4 changesets with 18 changes to 8 files
798 checked 4 changesets with 18 changes to 8 files
799
799
800 Stream clone with encodedstore
800 Stream clone with encodedstore
801 $ hg clone --config experimental.changegroup3=True --stream -U \
801 $ hg clone --config experimental.changegroup3=True --stream -U \
802 > http://localhost:$HGPORT2 stream-clone-encodedstore
802 > http://localhost:$HGPORT2 stream-clone-encodedstore
803 streaming all changes
803 streaming all changes
804 28 files to transfer, * of data (glob)
804 28 files to transfer, * of data (glob)
805 transferred * in * seconds (*) (glob)
805 transferred * in * seconds (*) (glob)
806 $ hg -R stream-clone-encodedstore verify
806 $ hg -R stream-clone-encodedstore verify
807 checking changesets
807 checking changesets
808 checking manifests
808 checking manifests
809 checking directory manifests
809 checking directory manifests
810 crosschecking files in changesets and manifests
810 crosschecking files in changesets and manifests
811 checking files
811 checking files
812 checked 4 changesets with 18 changes to 8 files
812 checked 4 changesets with 18 changes to 8 files
813
813
814 Stream clone with fncachestore
814 Stream clone with fncachestore
815 $ hg clone --config experimental.changegroup3=True --stream -U \
815 $ hg clone --config experimental.changegroup3=True --stream -U \
816 > http://localhost:$HGPORT stream-clone-fncachestore
816 > http://localhost:$HGPORT stream-clone-fncachestore
817 streaming all changes
817 streaming all changes
818 22 files to transfer, * of data (glob)
818 22 files to transfer, * of data (glob)
819 transferred * in * seconds (*) (glob)
819 transferred * in * seconds (*) (glob)
820 $ hg -R stream-clone-fncachestore verify
820 $ hg -R stream-clone-fncachestore verify
821 checking changesets
821 checking changesets
822 checking manifests
822 checking manifests
823 checking directory manifests
823 checking directory manifests
824 crosschecking files in changesets and manifests
824 crosschecking files in changesets and manifests
825 checking files
825 checking files
826 checked 4 changesets with 18 changes to 8 files
826 checked 4 changesets with 18 changes to 8 files
827
827
828 Packed bundle
828 Packed bundle
829 $ hg -R deeprepo debugcreatestreamclonebundle repo-packed.hg
829 $ hg -R deeprepo debugcreatestreamclonebundle repo-packed.hg
830 writing 5330 bytes for 18 files (no-zstd !)
830 writing 5330 bytes for 18 files (no-zstd !)
831 writing 5400 bytes for 18 files (zstd !)
831 writing 5400 bytes for 18 files (zstd !)
832 bundle requirements: generaldelta, revlogv1, sparserevlog, treemanifest (no-rust !)
832 bundle requirements:.* treemanifest(,.*)? (re)
833 bundle requirements: generaldelta, persistent-nodemap, revlogv1, sparserevlog, treemanifest (rust !)
834 $ hg debugbundle --spec repo-packed.hg
833 $ hg debugbundle --spec repo-packed.hg
835 none-packed1;requirements%3Dgeneraldelta%2Crevlogv1%2Csparserevlog%2Ctreemanifest (no-rust !)
834 none-packed1;requirements%3D(.*%2C)?treemanifest(%2C.*)? (re)
836 none-packed1;requirements%3Dgeneraldelta%2Cpersistent-nodemap%2Crevlogv1%2Csparserevlog%2Ctreemanifest (rust !)
837
835
838 #endif
836 #endif
839
837
840 Bundle with changegroup2 is not supported
838 Bundle with changegroup2 is not supported
841
839
842 $ hg -R deeprepo bundle --all -t v2 deeprepo.bundle
840 $ hg -R deeprepo bundle --all -t v2 deeprepo.bundle
843 abort: repository does not support bundle version 02
841 abort: repository does not support bundle version 02
844 [255]
842 [255]
845
843
846 Pull does not include changegroup for manifest the client already has from
844 Pull does not include changegroup for manifest the client already has from
847 other branch
845 other branch
848
846
849 $ mkdir grafted-dir-repo
847 $ mkdir grafted-dir-repo
850 $ cd grafted-dir-repo
848 $ cd grafted-dir-repo
851 $ hg --config experimental.treemanifest=1 init
849 $ hg --config experimental.treemanifest=1 init
852 $ mkdir dir
850 $ mkdir dir
853 $ echo a > dir/file
851 $ echo a > dir/file
854 $ echo a > file
852 $ echo a > file
855 $ hg ci -Am initial
853 $ hg ci -Am initial
856 adding dir/file
854 adding dir/file
857 adding file
855 adding file
858 $ echo b > dir/file
856 $ echo b > dir/file
859 $ hg ci -m updated
857 $ hg ci -m updated
860 $ hg co '.^'
858 $ hg co '.^'
861 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
859 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
862 $ hg revert -r tip dir/
860 $ hg revert -r tip dir/
863 reverting dir/file
861 reverting dir/file
864 $ echo b > file # to make sure root manifest is sent
862 $ echo b > file # to make sure root manifest is sent
865 $ hg ci -m grafted
863 $ hg ci -m grafted
866 created new head
864 created new head
867 $ cd ..
865 $ cd ..
868
866
869 $ hg --config experimental.treemanifest=1 clone --pull -r 1 \
867 $ hg --config experimental.treemanifest=1 clone --pull -r 1 \
870 > grafted-dir-repo grafted-dir-repo-clone
868 > grafted-dir-repo grafted-dir-repo-clone
871 adding changesets
869 adding changesets
872 adding manifests
870 adding manifests
873 adding file changes
871 adding file changes
874 added 2 changesets with 3 changes to 2 files
872 added 2 changesets with 3 changes to 2 files
875 new changesets d84f4c419457:09ab742f3b0f
873 new changesets d84f4c419457:09ab742f3b0f
876 updating to branch default
874 updating to branch default
877 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
875 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
878 $ cd grafted-dir-repo-clone
876 $ cd grafted-dir-repo-clone
879 $ hg pull -r 2
877 $ hg pull -r 2
880 pulling from $TESTTMP/grafted-dir-repo
878 pulling from $TESTTMP/grafted-dir-repo
881 searching for changes
879 searching for changes
882 adding changesets
880 adding changesets
883 adding manifests
881 adding manifests
884 adding file changes
882 adding file changes
885 added 1 changesets with 1 changes to 1 files (+1 heads)
883 added 1 changesets with 1 changes to 1 files (+1 heads)
886 new changesets 73699489fb7c
884 new changesets 73699489fb7c
887 (run 'hg heads' to see heads, 'hg merge' to merge)
885 (run 'hg heads' to see heads, 'hg merge' to merge)
888
886
889 Committing a empty commit does not duplicate root treemanifest
887 Committing a empty commit does not duplicate root treemanifest
890 $ echo z >> z
888 $ echo z >> z
891 $ hg commit -Aqm 'pre-empty commit'
889 $ hg commit -Aqm 'pre-empty commit'
892 $ hg rm z
890 $ hg rm z
893 $ hg commit --amend -m 'empty commit'
891 $ hg commit --amend -m 'empty commit'
894 saved backup bundle to $TESTTMP/grafted-dir-repo-clone/.hg/strip-backup/cb99d5717cea-9e3b6b02-amend.hg
892 saved backup bundle to $TESTTMP/grafted-dir-repo-clone/.hg/strip-backup/cb99d5717cea-9e3b6b02-amend.hg
895 $ hg log -r 'tip + tip^' -T '{manifest}\n'
893 $ hg log -r 'tip + tip^' -T '{manifest}\n'
896 1:678d3574b88c
894 1:678d3574b88c
897 1:678d3574b88c
895 1:678d3574b88c
898 $ hg --config extensions.strip= strip -r . -q
896 $ hg --config extensions.strip= strip -r . -q
General Comments 0
You need to be logged in to leave comments. Login now