##// END OF EJS Templates
tests: minor cleanup to treemanifest test
Martin von Zweigbergk -
r27952:c5ffbd4c stable
parent child Browse files
Show More
@@ -1,505 +1,505 b''
1 $ cat << EOF >> $HGRCPATH
1 $ cat << EOF >> $HGRCPATH
2 > [format]
2 > [format]
3 > usegeneraldelta=yes
3 > usegeneraldelta=yes
4 > EOF
4 > EOF
5
5
6 Set up repo
6 Set up repo
7
7
8 $ hg --config experimental.treemanifest=True init repo
8 $ hg --config experimental.treemanifest=True init repo
9 $ cd repo
9 $ cd repo
10
10
11 Requirements get set on init
11 Requirements get set on init
12
12
13 $ grep treemanifest .hg/requires
13 $ grep treemanifest .hg/requires
14 treemanifest
14 treemanifest
15
15
16 Without directories, looks like any other repo
16 Without directories, looks like any other repo
17
17
18 $ echo 0 > a
18 $ echo 0 > a
19 $ echo 0 > b
19 $ echo 0 > b
20 $ hg ci -Aqm initial
20 $ hg ci -Aqm initial
21 $ hg debugdata -m 0
21 $ hg debugdata -m 0
22 a\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (esc)
22 a\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (esc)
23 b\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (esc)
23 b\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (esc)
24
24
25 Submanifest is stored in separate revlog
25 Submanifest is stored in separate revlog
26
26
27 $ mkdir dir1
27 $ mkdir dir1
28 $ echo 1 > dir1/a
28 $ echo 1 > dir1/a
29 $ echo 1 > dir1/b
29 $ echo 1 > dir1/b
30 $ echo 1 > e
30 $ echo 1 > e
31 $ hg ci -Aqm 'add dir1'
31 $ hg ci -Aqm 'add dir1'
32 $ hg debugdata -m 1
32 $ hg debugdata -m 1
33 a\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (esc)
33 a\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (esc)
34 b\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (esc)
34 b\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (esc)
35 dir1\x008b3ffd73f901e83304c83d33132c8e774ceac44et (esc)
35 dir1\x008b3ffd73f901e83304c83d33132c8e774ceac44et (esc)
36 e\x00b8e02f6433738021a065f94175c7cd23db5f05be (esc)
36 e\x00b8e02f6433738021a065f94175c7cd23db5f05be (esc)
37 $ hg debugdata --dir dir1 0
37 $ hg debugdata --dir dir1 0
38 a\x00b8e02f6433738021a065f94175c7cd23db5f05be (esc)
38 a\x00b8e02f6433738021a065f94175c7cd23db5f05be (esc)
39 b\x00b8e02f6433738021a065f94175c7cd23db5f05be (esc)
39 b\x00b8e02f6433738021a065f94175c7cd23db5f05be (esc)
40
40
41 Can add nested directories
41 Can add nested directories
42
42
43 $ mkdir dir1/dir1
43 $ mkdir dir1/dir1
44 $ echo 2 > dir1/dir1/a
44 $ echo 2 > dir1/dir1/a
45 $ echo 2 > dir1/dir1/b
45 $ echo 2 > dir1/dir1/b
46 $ mkdir dir1/dir2
46 $ mkdir dir1/dir2
47 $ echo 2 > dir1/dir2/a
47 $ echo 2 > dir1/dir2/a
48 $ echo 2 > dir1/dir2/b
48 $ echo 2 > dir1/dir2/b
49 $ hg ci -Aqm 'add dir1/dir1'
49 $ hg ci -Aqm 'add dir1/dir1'
50 $ hg files -r .
50 $ hg files -r .
51 a
51 a
52 b
52 b
53 dir1/a (glob)
53 dir1/a (glob)
54 dir1/b (glob)
54 dir1/b (glob)
55 dir1/dir1/a (glob)
55 dir1/dir1/a (glob)
56 dir1/dir1/b (glob)
56 dir1/dir1/b (glob)
57 dir1/dir2/a (glob)
57 dir1/dir2/a (glob)
58 dir1/dir2/b (glob)
58 dir1/dir2/b (glob)
59 e
59 e
60
60
61 Revision is not created for unchanged directory
61 Revision is not created for unchanged directory
62
62
63 $ mkdir dir2
63 $ mkdir dir2
64 $ echo 3 > dir2/a
64 $ echo 3 > dir2/a
65 $ hg add dir2
65 $ hg add dir2
66 adding dir2/a (glob)
66 adding dir2/a (glob)
67 $ hg debugindex --dir dir1 > before
67 $ hg debugindex --dir dir1 > before
68 $ hg ci -qm 'add dir2'
68 $ hg ci -qm 'add dir2'
69 $ hg debugindex --dir dir1 > after
69 $ hg debugindex --dir dir1 > after
70 $ diff before after
70 $ diff before after
71 $ rm before after
71 $ rm before after
72
72
73 Removing directory does not create an revlog entry
73 Removing directory does not create an revlog entry
74
74
75 $ hg rm dir1/dir1
75 $ hg rm dir1/dir1
76 removing dir1/dir1/a (glob)
76 removing dir1/dir1/a (glob)
77 removing dir1/dir1/b (glob)
77 removing dir1/dir1/b (glob)
78 $ hg debugindex --dir dir1/dir1 > before
78 $ hg debugindex --dir dir1/dir1 > before
79 $ hg ci -qm 'remove dir1/dir1'
79 $ hg ci -qm 'remove dir1/dir1'
80 $ hg debugindex --dir dir1/dir1 > after
80 $ hg debugindex --dir dir1/dir1 > after
81 $ diff before after
81 $ diff before after
82 $ rm before after
82 $ rm before after
83
83
84 Check that hg files (calls treemanifest.walk()) works
84 Check that hg files (calls treemanifest.walk()) works
85 without loading all directory revlogs
85 without loading all directory revlogs
86
86
87 $ hg co 'desc("add dir2")'
87 $ hg co 'desc("add dir2")'
88 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
88 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
89 $ mv .hg/store/meta/dir2 .hg/store/meta/dir2-backup
89 $ mv .hg/store/meta/dir2 .hg/store/meta/dir2-backup
90 $ hg files -r . dir1
90 $ hg files -r . dir1
91 dir1/a (glob)
91 dir1/a (glob)
92 dir1/b (glob)
92 dir1/b (glob)
93 dir1/dir1/a (glob)
93 dir1/dir1/a (glob)
94 dir1/dir1/b (glob)
94 dir1/dir1/b (glob)
95 dir1/dir2/a (glob)
95 dir1/dir2/a (glob)
96 dir1/dir2/b (glob)
96 dir1/dir2/b (glob)
97
97
98 Check that status between revisions works (calls treemanifest.matches())
98 Check that status between revisions works (calls treemanifest.matches())
99 without loading all directory revlogs
99 without loading all directory revlogs
100
100
101 $ hg status --rev 'desc("add dir1")' --rev . dir1
101 $ hg status --rev 'desc("add dir1")' --rev . dir1
102 A dir1/dir1/a
102 A dir1/dir1/a
103 A dir1/dir1/b
103 A dir1/dir1/b
104 A dir1/dir2/a
104 A dir1/dir2/a
105 A dir1/dir2/b
105 A dir1/dir2/b
106 $ mv .hg/store/meta/dir2-backup .hg/store/meta/dir2
106 $ mv .hg/store/meta/dir2-backup .hg/store/meta/dir2
107
107
108 Merge creates 2-parent revision of directory revlog
108 Merge creates 2-parent revision of directory revlog
109
109
110 $ echo 5 > dir1/a
110 $ echo 5 > dir1/a
111 $ hg ci -Aqm 'modify dir1/a'
111 $ hg ci -Aqm 'modify dir1/a'
112 $ hg co '.^'
112 $ hg co '.^'
113 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
113 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
114 $ echo 6 > dir1/b
114 $ echo 6 > dir1/b
115 $ hg ci -Aqm 'modify dir1/b'
115 $ hg ci -Aqm 'modify dir1/b'
116 $ hg merge 'desc("modify dir1/a")'
116 $ hg merge 'desc("modify dir1/a")'
117 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
117 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
118 (branch merge, don't forget to commit)
118 (branch merge, don't forget to commit)
119 $ hg ci -m 'conflict-free merge involving dir1/'
119 $ hg ci -m 'conflict-free merge involving dir1/'
120 $ cat dir1/a
120 $ cat dir1/a
121 5
121 5
122 $ cat dir1/b
122 $ cat dir1/b
123 6
123 6
124 $ hg debugindex --dir dir1
124 $ hg debugindex --dir dir1
125 rev offset length delta linkrev nodeid p1 p2
125 rev offset length delta linkrev nodeid p1 p2
126 0 0 54 -1 1 8b3ffd73f901 000000000000 000000000000
126 0 0 54 -1 1 8b3ffd73f901 000000000000 000000000000
127 1 54 68 0 2 68e9d057c5a8 8b3ffd73f901 000000000000
127 1 54 68 0 2 68e9d057c5a8 8b3ffd73f901 000000000000
128 2 122 12 1 4 4698198d2624 68e9d057c5a8 000000000000
128 2 122 12 1 4 4698198d2624 68e9d057c5a8 000000000000
129 3 134 55 1 5 44844058ccce 68e9d057c5a8 000000000000
129 3 134 55 1 5 44844058ccce 68e9d057c5a8 000000000000
130 4 189 55 1 6 bf3d9b744927 68e9d057c5a8 000000000000
130 4 189 55 1 6 bf3d9b744927 68e9d057c5a8 000000000000
131 5 244 55 4 7 dde7c0af2a03 bf3d9b744927 44844058ccce
131 5 244 55 4 7 dde7c0af2a03 bf3d9b744927 44844058ccce
132
132
133 Merge keeping directory from parent 1 does not create revlog entry. (Note that
133 Merge keeping directory from parent 1 does not create revlog entry. (Note that
134 dir1's manifest does change, but only because dir1/a's filelog changes.)
134 dir1's manifest does change, but only because dir1/a's filelog changes.)
135
135
136 $ hg co 'desc("add dir2")'
136 $ hg co 'desc("add dir2")'
137 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
137 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
138 $ echo 8 > dir2/a
138 $ echo 8 > dir2/a
139 $ hg ci -m 'modify dir2/a'
139 $ hg ci -m 'modify dir2/a'
140 created new head
140 created new head
141
141
142 $ hg debugindex --dir dir2 > before
142 $ hg debugindex --dir dir2 > before
143 $ hg merge 'desc("modify dir1/a")'
143 $ hg merge 'desc("modify dir1/a")'
144 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
144 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
145 (branch merge, don't forget to commit)
145 (branch merge, don't forget to commit)
146 $ hg revert -r 'desc("modify dir2/a")' .
146 $ hg revert -r 'desc("modify dir2/a")' .
147 reverting dir1/a (glob)
147 reverting dir1/a (glob)
148 $ hg ci -m 'merge, keeping parent 1'
148 $ hg ci -m 'merge, keeping parent 1'
149 $ hg debugindex --dir dir2 > after
149 $ hg debugindex --dir dir2 > after
150 $ diff before after
150 $ diff before after
151 $ rm before after
151 $ rm before after
152
152
153 Merge keeping directory from parent 2 does not create revlog entry. (Note that
153 Merge keeping directory from parent 2 does not create revlog entry. (Note that
154 dir2's manifest does change, but only because dir2/a's filelog changes.)
154 dir2's manifest does change, but only because dir2/a's filelog changes.)
155
155
156 $ hg co 'desc("modify dir2/a")'
156 $ hg co 'desc("modify dir2/a")'
157 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
157 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
158 $ hg debugindex --dir dir1 > before
158 $ hg debugindex --dir dir1 > before
159 $ hg merge 'desc("modify dir1/a")'
159 $ hg merge 'desc("modify dir1/a")'
160 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
160 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
161 (branch merge, don't forget to commit)
161 (branch merge, don't forget to commit)
162 $ hg revert -r 'desc("modify dir1/a")' .
162 $ hg revert -r 'desc("modify dir1/a")' .
163 reverting dir2/a (glob)
163 reverting dir2/a (glob)
164 $ hg ci -m 'merge, keeping parent 2'
164 $ hg ci -m 'merge, keeping parent 2'
165 created new head
165 created new head
166 $ hg debugindex --dir dir1 > after
166 $ hg debugindex --dir dir1 > after
167 $ diff before after
167 $ diff before after
168 $ rm before after
168 $ rm before after
169
169
170 Create flat source repo for tests with mixed flat/tree manifests
170 Create flat source repo for tests with mixed flat/tree manifests
171
171
172 $ cd ..
172 $ cd ..
173 $ hg init repo-flat
173 $ hg init repo-flat
174 $ cd repo-flat
174 $ cd repo-flat
175
175
176 Create a few commits with flat manifest
176 Create a few commits with flat manifest
177
177
178 $ echo 0 > a
178 $ echo 0 > a
179 $ echo 0 > b
179 $ echo 0 > b
180 $ echo 0 > e
180 $ echo 0 > e
181 $ for d in dir1 dir1/dir1 dir1/dir2 dir2
181 $ for d in dir1 dir1/dir1 dir1/dir2 dir2
182 > do
182 > do
183 > mkdir $d
183 > mkdir $d
184 > echo 0 > $d/a
184 > echo 0 > $d/a
185 > echo 0 > $d/b
185 > echo 0 > $d/b
186 > done
186 > done
187 $ hg ci -Aqm initial
187 $ hg ci -Aqm initial
188
188
189 $ echo 1 > a
189 $ echo 1 > a
190 $ echo 1 > dir1/a
190 $ echo 1 > dir1/a
191 $ echo 1 > dir1/dir1/a
191 $ echo 1 > dir1/dir1/a
192 $ hg ci -Aqm 'modify on branch 1'
192 $ hg ci -Aqm 'modify on branch 1'
193
193
194 $ hg co 0
194 $ hg co 0
195 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
195 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
196 $ echo 2 > b
196 $ echo 2 > b
197 $ echo 2 > dir1/b
197 $ echo 2 > dir1/b
198 $ echo 2 > dir1/dir1/b
198 $ echo 2 > dir1/dir1/b
199 $ hg ci -Aqm 'modify on branch 2'
199 $ hg ci -Aqm 'modify on branch 2'
200
200
201 $ hg merge 1
201 $ hg merge 1
202 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
202 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
203 (branch merge, don't forget to commit)
203 (branch merge, don't forget to commit)
204 $ hg ci -m 'merge of flat manifests to new flat manifest'
204 $ hg ci -m 'merge of flat manifests to new flat manifest'
205
205
206 Create clone with tree manifests enabled
206 Create clone with tree manifests enabled
207
207
208 $ cd ..
208 $ cd ..
209 $ hg clone --pull --config experimental.treemanifest=1 repo-flat repo-mixed
209 $ hg clone --pull --config experimental.treemanifest=1 repo-flat repo-mixed
210 requesting all changes
210 requesting all changes
211 adding changesets
211 adding changesets
212 adding manifests
212 adding manifests
213 adding file changes
213 adding file changes
214 added 4 changesets with 17 changes to 11 files
214 added 4 changesets with 17 changes to 11 files
215 updating to branch default
215 updating to branch default
216 11 files updated, 0 files merged, 0 files removed, 0 files unresolved
216 11 files updated, 0 files merged, 0 files removed, 0 files unresolved
217 $ cd repo-mixed
217 $ cd repo-mixed
218 $ test -f .hg/store/meta
218 $ test -d .hg/store/meta
219 [1]
219 [1]
220 $ grep treemanifest .hg/requires
220 $ grep treemanifest .hg/requires
221 treemanifest
221 treemanifest
222
222
223 Commit should store revlog per directory
223 Commit should store revlog per directory
224
224
225 $ hg co 1
225 $ hg co 1
226 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
226 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
227 $ echo 3 > a
227 $ echo 3 > a
228 $ echo 3 > dir1/a
228 $ echo 3 > dir1/a
229 $ echo 3 > dir1/dir1/a
229 $ echo 3 > dir1/dir1/a
230 $ hg ci -m 'first tree'
230 $ hg ci -m 'first tree'
231 created new head
231 created new head
232 $ find .hg/store/meta | sort
232 $ find .hg/store/meta | sort
233 .hg/store/meta
233 .hg/store/meta
234 .hg/store/meta/dir1
234 .hg/store/meta/dir1
235 .hg/store/meta/dir1/00manifest.i
235 .hg/store/meta/dir1/00manifest.i
236 .hg/store/meta/dir1/dir1
236 .hg/store/meta/dir1/dir1
237 .hg/store/meta/dir1/dir1/00manifest.i
237 .hg/store/meta/dir1/dir1/00manifest.i
238 .hg/store/meta/dir1/dir2
238 .hg/store/meta/dir1/dir2
239 .hg/store/meta/dir1/dir2/00manifest.i
239 .hg/store/meta/dir1/dir2/00manifest.i
240 .hg/store/meta/dir2
240 .hg/store/meta/dir2
241 .hg/store/meta/dir2/00manifest.i
241 .hg/store/meta/dir2/00manifest.i
242
242
243 Merge of two trees
243 Merge of two trees
244
244
245 $ hg co 2
245 $ hg co 2
246 6 files updated, 0 files merged, 0 files removed, 0 files unresolved
246 6 files updated, 0 files merged, 0 files removed, 0 files unresolved
247 $ hg merge 1
247 $ hg merge 1
248 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
248 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
249 (branch merge, don't forget to commit)
249 (branch merge, don't forget to commit)
250 $ hg ci -m 'merge of flat manifests to new tree manifest'
250 $ hg ci -m 'merge of flat manifests to new tree manifest'
251 created new head
251 created new head
252 $ hg diff -r 3
252 $ hg diff -r 3
253
253
254 Parent of tree root manifest should be flat manifest, and two for merge
254 Parent of tree root manifest should be flat manifest, and two for merge
255
255
256 $ hg debugindex -m
256 $ hg debugindex -m
257 rev offset length delta linkrev nodeid p1 p2
257 rev offset length delta linkrev nodeid p1 p2
258 0 0 80 -1 0 40536115ed9e 000000000000 000000000000
258 0 0 80 -1 0 40536115ed9e 000000000000 000000000000
259 1 80 83 0 1 f3376063c255 40536115ed9e 000000000000
259 1 80 83 0 1 f3376063c255 40536115ed9e 000000000000
260 2 163 89 0 2 5d9b9da231a2 40536115ed9e 000000000000
260 2 163 89 0 2 5d9b9da231a2 40536115ed9e 000000000000
261 3 252 83 2 3 d17d663cbd8a 5d9b9da231a2 f3376063c255
261 3 252 83 2 3 d17d663cbd8a 5d9b9da231a2 f3376063c255
262 4 335 124 1 4 51e32a8c60ee f3376063c255 000000000000
262 4 335 124 1 4 51e32a8c60ee f3376063c255 000000000000
263 5 459 126 2 5 cc5baa78b230 5d9b9da231a2 f3376063c255
263 5 459 126 2 5 cc5baa78b230 5d9b9da231a2 f3376063c255
264
264
265
265
266 Status across flat/tree boundary should work
266 Status across flat/tree boundary should work
267
267
268 $ hg status --rev '.^' --rev .
268 $ hg status --rev '.^' --rev .
269 M a
269 M a
270 M dir1/a
270 M dir1/a
271 M dir1/dir1/a
271 M dir1/dir1/a
272
272
273
273
274 Turning off treemanifest config has no effect
274 Turning off treemanifest config has no effect
275
275
276 $ hg debugindex .hg/store/meta/dir1/00manifest.i
276 $ hg debugindex --dir dir1
277 rev offset length delta linkrev nodeid p1 p2
277 rev offset length delta linkrev nodeid p1 p2
278 0 0 127 -1 4 064927a0648a 000000000000 000000000000
278 0 0 127 -1 4 064927a0648a 000000000000 000000000000
279 1 127 111 0 5 25ecb8cb8618 000000000000 000000000000
279 1 127 111 0 5 25ecb8cb8618 000000000000 000000000000
280 $ echo 2 > dir1/a
280 $ echo 2 > dir1/a
281 $ hg --config experimental.treemanifest=False ci -qm 'modify dir1/a'
281 $ hg --config experimental.treemanifest=False ci -qm 'modify dir1/a'
282 $ hg debugindex .hg/store/meta/dir1/00manifest.i
282 $ hg debugindex --dir dir1
283 rev offset length delta linkrev nodeid p1 p2
283 rev offset length delta linkrev nodeid p1 p2
284 0 0 127 -1 4 064927a0648a 000000000000 000000000000
284 0 0 127 -1 4 064927a0648a 000000000000 000000000000
285 1 127 111 0 5 25ecb8cb8618 000000000000 000000000000
285 1 127 111 0 5 25ecb8cb8618 000000000000 000000000000
286 2 238 55 1 6 5b16163a30c6 25ecb8cb8618 000000000000
286 2 238 55 1 6 5b16163a30c6 25ecb8cb8618 000000000000
287
287
288 Stripping and recovering changes should work
288 Stripping and recovering changes should work
289
289
290 $ hg st --change tip
290 $ hg st --change tip
291 M dir1/a
291 M dir1/a
292 $ hg --config extensions.strip= strip tip
292 $ hg --config extensions.strip= strip tip
293 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
293 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
294 saved backup bundle to $TESTTMP/repo-mixed/.hg/strip-backup/51cfd7b1e13b-78a2f3ed-backup.hg (glob)
294 saved backup bundle to $TESTTMP/repo-mixed/.hg/strip-backup/51cfd7b1e13b-78a2f3ed-backup.hg (glob)
295 $ hg unbundle -q .hg/strip-backup/*
295 $ hg unbundle -q .hg/strip-backup/*
296 $ hg st --change tip
296 $ hg st --change tip
297 M dir1/a
297 M dir1/a
298
298
299 Shelving and unshelving should work
299 Shelving and unshelving should work
300
300
301 $ echo foo >> dir1/a
301 $ echo foo >> dir1/a
302 $ hg --config extensions.shelve= shelve
302 $ hg --config extensions.shelve= shelve
303 shelved as default
303 shelved as default
304 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
304 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
305 $ hg --config extensions.shelve= unshelve
305 $ hg --config extensions.shelve= unshelve
306 unshelving change 'default'
306 unshelving change 'default'
307 $ hg diff --nodates
307 $ hg diff --nodates
308 diff -r 708a273da119 dir1/a
308 diff -r 708a273da119 dir1/a
309 --- a/dir1/a
309 --- a/dir1/a
310 +++ b/dir1/a
310 +++ b/dir1/a
311 @@ -1,1 +1,2 @@
311 @@ -1,1 +1,2 @@
312 1
312 1
313 +foo
313 +foo
314
314
315 Pushing from treemanifest repo to an empty repo makes that a treemanifest repo
315 Pushing from treemanifest repo to an empty repo makes that a treemanifest repo
316
316
317 $ cd ..
317 $ cd ..
318 $ hg init empty-repo
318 $ hg init empty-repo
319 $ cat << EOF >> empty-repo/.hg/hgrc
319 $ cat << EOF >> empty-repo/.hg/hgrc
320 > [experimental]
320 > [experimental]
321 > changegroup3=yes
321 > changegroup3=yes
322 > EOF
322 > EOF
323 $ grep treemanifest empty-repo/.hg/requires
323 $ grep treemanifest empty-repo/.hg/requires
324 [1]
324 [1]
325 $ hg push -R repo -r 0 empty-repo
325 $ hg push -R repo -r 0 empty-repo
326 pushing to empty-repo
326 pushing to empty-repo
327 searching for changes
327 searching for changes
328 adding changesets
328 adding changesets
329 adding manifests
329 adding manifests
330 adding file changes
330 adding file changes
331 added 1 changesets with 2 changes to 2 files
331 added 1 changesets with 2 changes to 2 files
332 $ grep treemanifest empty-repo/.hg/requires
332 $ grep treemanifest empty-repo/.hg/requires
333 treemanifest
333 treemanifest
334
334
335 Pushing to an empty repo works
335 Pushing to an empty repo works
336
336
337 $ hg --config experimental.treemanifest=1 init clone
337 $ hg --config experimental.treemanifest=1 init clone
338 $ grep treemanifest clone/.hg/requires
338 $ grep treemanifest clone/.hg/requires
339 treemanifest
339 treemanifest
340 $ hg push -R repo clone
340 $ hg push -R repo clone
341 pushing to clone
341 pushing to clone
342 searching for changes
342 searching for changes
343 adding changesets
343 adding changesets
344 adding manifests
344 adding manifests
345 adding file changes
345 adding file changes
346 added 11 changesets with 15 changes to 10 files (+3 heads)
346 added 11 changesets with 15 changes to 10 files (+3 heads)
347 $ grep treemanifest clone/.hg/requires
347 $ grep treemanifest clone/.hg/requires
348 treemanifest
348 treemanifest
349
349
350 Create deeper repo with tree manifests.
350 Create deeper repo with tree manifests.
351
351
352 $ hg --config experimental.treemanifest=True init deeprepo
352 $ hg --config experimental.treemanifest=True init deeprepo
353 $ cd deeprepo
353 $ cd deeprepo
354
354
355 $ mkdir a
355 $ mkdir a
356 $ mkdir b
356 $ mkdir b
357 $ mkdir b/bar
357 $ mkdir b/bar
358 $ mkdir b/bar/orange
358 $ mkdir b/bar/orange
359 $ mkdir b/bar/orange/fly
359 $ mkdir b/bar/orange/fly
360 $ mkdir b/foo
360 $ mkdir b/foo
361 $ mkdir b/foo/apple
361 $ mkdir b/foo/apple
362 $ mkdir b/foo/apple/bees
362 $ mkdir b/foo/apple/bees
363
363
364 $ touch a/one.txt
364 $ touch a/one.txt
365 $ touch a/two.txt
365 $ touch a/two.txt
366 $ touch b/bar/fruits.txt
366 $ touch b/bar/fruits.txt
367 $ touch b/bar/orange/fly/gnat.py
367 $ touch b/bar/orange/fly/gnat.py
368 $ touch b/bar/orange/fly/housefly.txt
368 $ touch b/bar/orange/fly/housefly.txt
369 $ touch b/foo/apple/bees/flower.py
369 $ touch b/foo/apple/bees/flower.py
370 $ touch c.txt
370 $ touch c.txt
371 $ touch d.py
371 $ touch d.py
372
372
373 $ hg ci -Aqm 'initial'
373 $ hg ci -Aqm 'initial'
374
374
375 We'll see that visitdir works by removing some treemanifest revlogs and running
375 We'll see that visitdir works by removing some treemanifest revlogs and running
376 the files command with various parameters.
376 the files command with various parameters.
377
377
378 Test files from the root.
378 Test files from the root.
379
379
380 $ hg files -r .
380 $ hg files -r .
381 a/one.txt (glob)
381 a/one.txt (glob)
382 a/two.txt (glob)
382 a/two.txt (glob)
383 b/bar/fruits.txt (glob)
383 b/bar/fruits.txt (glob)
384 b/bar/orange/fly/gnat.py (glob)
384 b/bar/orange/fly/gnat.py (glob)
385 b/bar/orange/fly/housefly.txt (glob)
385 b/bar/orange/fly/housefly.txt (glob)
386 b/foo/apple/bees/flower.py (glob)
386 b/foo/apple/bees/flower.py (glob)
387 c.txt
387 c.txt
388 d.py
388 d.py
389
389
390 Excludes with a glob should not exclude everything from the glob's root
390 Excludes with a glob should not exclude everything from the glob's root
391
391
392 $ hg files -r . -X 'b/fo?' b
392 $ hg files -r . -X 'b/fo?' b
393 b/bar/fruits.txt (glob)
393 b/bar/fruits.txt (glob)
394 b/bar/orange/fly/gnat.py (glob)
394 b/bar/orange/fly/gnat.py (glob)
395 b/bar/orange/fly/housefly.txt (glob)
395 b/bar/orange/fly/housefly.txt (glob)
396
396
397 Test files for a subdirectory.
397 Test files for a subdirectory.
398
398
399 $ mv .hg/store/meta/a oldmf
399 $ mv .hg/store/meta/a oldmf
400 $ hg files -r . b
400 $ hg files -r . b
401 b/bar/fruits.txt (glob)
401 b/bar/fruits.txt (glob)
402 b/bar/orange/fly/gnat.py (glob)
402 b/bar/orange/fly/gnat.py (glob)
403 b/bar/orange/fly/housefly.txt (glob)
403 b/bar/orange/fly/housefly.txt (glob)
404 b/foo/apple/bees/flower.py (glob)
404 b/foo/apple/bees/flower.py (glob)
405 $ mv oldmf .hg/store/meta/a
405 $ mv oldmf .hg/store/meta/a
406
406
407 Test files with just includes and excludes.
407 Test files with just includes and excludes.
408
408
409 $ mv .hg/store/meta/a oldmf
409 $ mv .hg/store/meta/a oldmf
410 $ mv .hg/store/meta/b/bar/orange/fly oldmf2
410 $ mv .hg/store/meta/b/bar/orange/fly oldmf2
411 $ mv .hg/store/meta/b/foo/apple/bees oldmf3
411 $ mv .hg/store/meta/b/foo/apple/bees oldmf3
412 $ hg files -r . -I path:b/bar -X path:b/bar/orange/fly -I path:b/foo -X path:b/foo/apple/bees
412 $ hg files -r . -I path:b/bar -X path:b/bar/orange/fly -I path:b/foo -X path:b/foo/apple/bees
413 b/bar/fruits.txt (glob)
413 b/bar/fruits.txt (glob)
414 $ mv oldmf .hg/store/meta/a
414 $ mv oldmf .hg/store/meta/a
415 $ mv oldmf2 .hg/store/meta/b/bar/orange/fly
415 $ mv oldmf2 .hg/store/meta/b/bar/orange/fly
416 $ mv oldmf3 .hg/store/meta/b/foo/apple/bees
416 $ mv oldmf3 .hg/store/meta/b/foo/apple/bees
417
417
418 Test files for a subdirectory, excluding a directory within it.
418 Test files for a subdirectory, excluding a directory within it.
419
419
420 $ mv .hg/store/meta/a oldmf
420 $ mv .hg/store/meta/a oldmf
421 $ mv .hg/store/meta/b/foo oldmf2
421 $ mv .hg/store/meta/b/foo oldmf2
422 $ hg files -r . -X path:b/foo b
422 $ hg files -r . -X path:b/foo b
423 b/bar/fruits.txt (glob)
423 b/bar/fruits.txt (glob)
424 b/bar/orange/fly/gnat.py (glob)
424 b/bar/orange/fly/gnat.py (glob)
425 b/bar/orange/fly/housefly.txt (glob)
425 b/bar/orange/fly/housefly.txt (glob)
426 $ mv oldmf .hg/store/meta/a
426 $ mv oldmf .hg/store/meta/a
427 $ mv oldmf2 .hg/store/meta/b/foo
427 $ mv oldmf2 .hg/store/meta/b/foo
428
428
429 Test files for a sub directory, including only a directory within it, and
429 Test files for a sub directory, including only a directory within it, and
430 including an unrelated directory.
430 including an unrelated directory.
431
431
432 $ mv .hg/store/meta/a oldmf
432 $ mv .hg/store/meta/a oldmf
433 $ mv .hg/store/meta/b/foo oldmf2
433 $ mv .hg/store/meta/b/foo oldmf2
434 $ hg files -r . -I path:b/bar/orange -I path:a b
434 $ hg files -r . -I path:b/bar/orange -I path:a b
435 b/bar/orange/fly/gnat.py (glob)
435 b/bar/orange/fly/gnat.py (glob)
436 b/bar/orange/fly/housefly.txt (glob)
436 b/bar/orange/fly/housefly.txt (glob)
437 $ mv oldmf .hg/store/meta/a
437 $ mv oldmf .hg/store/meta/a
438 $ mv oldmf2 .hg/store/meta/b/foo
438 $ mv oldmf2 .hg/store/meta/b/foo
439
439
440 Test files for a pattern, including a directory, and excluding a directory
440 Test files for a pattern, including a directory, and excluding a directory
441 within that.
441 within that.
442
442
443 $ mv .hg/store/meta/a oldmf
443 $ mv .hg/store/meta/a oldmf
444 $ mv .hg/store/meta/b/foo oldmf2
444 $ mv .hg/store/meta/b/foo oldmf2
445 $ mv .hg/store/meta/b/bar/orange oldmf3
445 $ mv .hg/store/meta/b/bar/orange oldmf3
446 $ hg files -r . glob:**.txt -I path:b/bar -X path:b/bar/orange
446 $ hg files -r . glob:**.txt -I path:b/bar -X path:b/bar/orange
447 b/bar/fruits.txt (glob)
447 b/bar/fruits.txt (glob)
448 $ mv oldmf .hg/store/meta/a
448 $ mv oldmf .hg/store/meta/a
449 $ mv oldmf2 .hg/store/meta/b/foo
449 $ mv oldmf2 .hg/store/meta/b/foo
450 $ mv oldmf3 .hg/store/meta/b/bar/orange
450 $ mv oldmf3 .hg/store/meta/b/bar/orange
451
451
452 Add some more changes to the deep repo
452 Add some more changes to the deep repo
453 $ echo narf >> b/bar/fruits.txt
453 $ echo narf >> b/bar/fruits.txt
454 $ hg ci -m narf
454 $ hg ci -m narf
455 $ echo troz >> b/bar/orange/fly/gnat.py
455 $ echo troz >> b/bar/orange/fly/gnat.py
456 $ hg ci -m troz
456 $ hg ci -m troz
457
457
458 Test cloning a treemanifest repo over http.
458 Test cloning a treemanifest repo over http.
459 $ hg serve -p $HGPORT -d --pid-file=hg.pid --errorlog=errors.log
459 $ hg serve -p $HGPORT -d --pid-file=hg.pid --errorlog=errors.log
460 $ cat hg.pid >> $DAEMON_PIDS
460 $ cat hg.pid >> $DAEMON_PIDS
461 $ cd ..
461 $ cd ..
462 We can clone even with the knob turned off and we'll get a treemanifest repo.
462 We can clone even with the knob turned off and we'll get a treemanifest repo.
463 $ hg clone --config experimental.treemanifest=False \
463 $ hg clone --config experimental.treemanifest=False \
464 > --config experimental.changegroup3=True \
464 > --config experimental.changegroup3=True \
465 > http://localhost:$HGPORT deepclone
465 > http://localhost:$HGPORT deepclone
466 requesting all changes
466 requesting all changes
467 adding changesets
467 adding changesets
468 adding manifests
468 adding manifests
469 adding file changes
469 adding file changes
470 added 3 changesets with 10 changes to 8 files
470 added 3 changesets with 10 changes to 8 files
471 updating to branch default
471 updating to branch default
472 8 files updated, 0 files merged, 0 files removed, 0 files unresolved
472 8 files updated, 0 files merged, 0 files removed, 0 files unresolved
473 No server errors.
473 No server errors.
474 $ cat deeprepo/errors.log
474 $ cat deeprepo/errors.log
475 requires got updated to include treemanifest
475 requires got updated to include treemanifest
476 $ cat deepclone/.hg/requires | grep treemanifest
476 $ cat deepclone/.hg/requires | grep treemanifest
477 treemanifest
477 treemanifest
478 Tree manifest revlogs exist.
478 Tree manifest revlogs exist.
479 $ find deepclone/.hg/store/meta | sort
479 $ find deepclone/.hg/store/meta | sort
480 deepclone/.hg/store/meta
480 deepclone/.hg/store/meta
481 deepclone/.hg/store/meta/a
481 deepclone/.hg/store/meta/a
482 deepclone/.hg/store/meta/a/00manifest.i
482 deepclone/.hg/store/meta/a/00manifest.i
483 deepclone/.hg/store/meta/b
483 deepclone/.hg/store/meta/b
484 deepclone/.hg/store/meta/b/00manifest.i
484 deepclone/.hg/store/meta/b/00manifest.i
485 deepclone/.hg/store/meta/b/bar
485 deepclone/.hg/store/meta/b/bar
486 deepclone/.hg/store/meta/b/bar/00manifest.i
486 deepclone/.hg/store/meta/b/bar/00manifest.i
487 deepclone/.hg/store/meta/b/bar/orange
487 deepclone/.hg/store/meta/b/bar/orange
488 deepclone/.hg/store/meta/b/bar/orange/00manifest.i
488 deepclone/.hg/store/meta/b/bar/orange/00manifest.i
489 deepclone/.hg/store/meta/b/bar/orange/fly
489 deepclone/.hg/store/meta/b/bar/orange/fly
490 deepclone/.hg/store/meta/b/bar/orange/fly/00manifest.i
490 deepclone/.hg/store/meta/b/bar/orange/fly/00manifest.i
491 deepclone/.hg/store/meta/b/foo
491 deepclone/.hg/store/meta/b/foo
492 deepclone/.hg/store/meta/b/foo/00manifest.i
492 deepclone/.hg/store/meta/b/foo/00manifest.i
493 deepclone/.hg/store/meta/b/foo/apple
493 deepclone/.hg/store/meta/b/foo/apple
494 deepclone/.hg/store/meta/b/foo/apple/00manifest.i
494 deepclone/.hg/store/meta/b/foo/apple/00manifest.i
495 deepclone/.hg/store/meta/b/foo/apple/bees
495 deepclone/.hg/store/meta/b/foo/apple/bees
496 deepclone/.hg/store/meta/b/foo/apple/bees/00manifest.i
496 deepclone/.hg/store/meta/b/foo/apple/bees/00manifest.i
497 Verify passes.
497 Verify passes.
498 $ cd deepclone
498 $ cd deepclone
499 $ hg verify
499 $ hg verify
500 checking changesets
500 checking changesets
501 checking manifests
501 checking manifests
502 crosschecking files in changesets and manifests
502 crosschecking files in changesets and manifests
503 checking files
503 checking files
504 8 files, 3 changesets, 10 total revisions
504 8 files, 3 changesets, 10 total revisions
505 $ cd ..
505 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now