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