##// END OF EJS Templates
test-treemanifest: add globs for Windows
Matt Harbison -
r25153:1929d9c8 default
parent child Browse files
Show More
@@ -1,278 +1,278 b''
1
1
2 Set up repo
2 Set up repo
3
3
4 $ hg --config experimental.treemanifest=True init repo
4 $ hg --config experimental.treemanifest=True init repo
5 $ cd repo
5 $ cd repo
6
6
7 Requirements get set on init
7 Requirements get set on init
8
8
9 $ grep treemanifest .hg/requires
9 $ grep treemanifest .hg/requires
10 treemanifest
10 treemanifest
11
11
12 Without directories, looks like any other repo
12 Without directories, looks like any other repo
13
13
14 $ echo 0 > a
14 $ echo 0 > a
15 $ echo 0 > b
15 $ echo 0 > b
16 $ hg ci -Aqm initial
16 $ hg ci -Aqm initial
17 $ hg debugdata -m 0
17 $ hg debugdata -m 0
18 a\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (esc)
18 a\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (esc)
19 b\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (esc)
19 b\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (esc)
20
20
21 Submanifest is stored in separate revlog
21 Submanifest is stored in separate revlog
22
22
23 $ mkdir dir1
23 $ mkdir dir1
24 $ echo 1 > dir1/a
24 $ echo 1 > dir1/a
25 $ echo 1 > dir1/b
25 $ echo 1 > dir1/b
26 $ echo 1 > e
26 $ echo 1 > e
27 $ hg ci -Aqm 'add dir1'
27 $ hg ci -Aqm 'add dir1'
28 $ hg debugdata -m 1
28 $ hg debugdata -m 1
29 a\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (esc)
29 a\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (esc)
30 b\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (esc)
30 b\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (esc)
31 dir1\x008b3ffd73f901e83304c83d33132c8e774ceac44ed (esc)
31 dir1\x008b3ffd73f901e83304c83d33132c8e774ceac44ed (esc)
32 e\x00b8e02f6433738021a065f94175c7cd23db5f05be (esc)
32 e\x00b8e02f6433738021a065f94175c7cd23db5f05be (esc)
33 $ hg debugdata --dir dir1 0
33 $ hg debugdata --dir dir1 0
34 a\x00b8e02f6433738021a065f94175c7cd23db5f05be (esc)
34 a\x00b8e02f6433738021a065f94175c7cd23db5f05be (esc)
35 b\x00b8e02f6433738021a065f94175c7cd23db5f05be (esc)
35 b\x00b8e02f6433738021a065f94175c7cd23db5f05be (esc)
36
36
37 Can add nested directories
37 Can add nested directories
38
38
39 $ mkdir dir1/dir1
39 $ mkdir dir1/dir1
40 $ echo 2 > dir1/dir1/a
40 $ echo 2 > dir1/dir1/a
41 $ echo 2 > dir1/dir1/b
41 $ echo 2 > dir1/dir1/b
42 $ mkdir dir1/dir2
42 $ mkdir dir1/dir2
43 $ echo 2 > dir1/dir2/a
43 $ echo 2 > dir1/dir2/a
44 $ echo 2 > dir1/dir2/b
44 $ echo 2 > dir1/dir2/b
45 $ hg ci -Aqm 'add dir1/dir1'
45 $ hg ci -Aqm 'add dir1/dir1'
46 $ hg files -r .
46 $ hg files -r .
47 a
47 a
48 b
48 b
49 dir1/a
49 dir1/a (glob)
50 dir1/b
50 dir1/b (glob)
51 dir1/dir1/a
51 dir1/dir1/a (glob)
52 dir1/dir1/b
52 dir1/dir1/b (glob)
53 dir1/dir2/a
53 dir1/dir2/a (glob)
54 dir1/dir2/b
54 dir1/dir2/b (glob)
55 e
55 e
56
56
57 Revision is not created for unchanged directory
57 Revision is not created for unchanged directory
58
58
59 $ mkdir dir2
59 $ mkdir dir2
60 $ echo 3 > dir2/a
60 $ echo 3 > dir2/a
61 $ hg add dir2
61 $ hg add dir2
62 adding dir2/a
62 adding dir2/a (glob)
63 $ hg debugindex --dir dir1 > before
63 $ hg debugindex --dir dir1 > before
64 $ hg ci -qm 'add dir2'
64 $ hg ci -qm 'add dir2'
65 $ hg debugindex --dir dir1 > after
65 $ hg debugindex --dir dir1 > after
66 $ diff before after
66 $ diff before after
67 $ rm before after
67 $ rm before after
68
68
69 Removing directory does not create an revlog entry
69 Removing directory does not create an revlog entry
70
70
71 $ hg rm dir1/dir1
71 $ hg rm dir1/dir1
72 removing dir1/dir1/a
72 removing dir1/dir1/a (glob)
73 removing dir1/dir1/b
73 removing dir1/dir1/b (glob)
74 $ hg debugindex --dir dir1/dir1 > before
74 $ hg debugindex --dir dir1/dir1 > before
75 $ hg ci -qm 'remove dir1/dir1'
75 $ hg ci -qm 'remove dir1/dir1'
76 $ hg debugindex --dir dir1/dir1 > after
76 $ hg debugindex --dir dir1/dir1 > after
77 $ diff before after
77 $ diff before after
78 $ rm before after
78 $ rm before after
79
79
80 Check that hg files (calls treemanifest.walk()) works
80 Check that hg files (calls treemanifest.walk()) works
81
81
82 $ hg co 'desc("add dir2")'
82 $ hg co 'desc("add dir2")'
83 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
83 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
84 $ hg files -r . dir1
84 $ hg files -r . dir1
85 dir1/a
85 dir1/a (glob)
86 dir1/b
86 dir1/b (glob)
87 dir1/dir1/a
87 dir1/dir1/a (glob)
88 dir1/dir1/b
88 dir1/dir1/b (glob)
89 dir1/dir2/a
89 dir1/dir2/a (glob)
90 dir1/dir2/b
90 dir1/dir2/b (glob)
91
91
92 Check that status between revisions works (calls treemanifest.matches())
92 Check that status between revisions works (calls treemanifest.matches())
93
93
94 $ hg status --rev 'desc("add dir1")' --rev . dir1
94 $ hg status --rev 'desc("add dir1")' --rev . dir1
95 A dir1/dir1/a
95 A dir1/dir1/a
96 A dir1/dir1/b
96 A dir1/dir1/b
97 A dir1/dir2/a
97 A dir1/dir2/a
98 A dir1/dir2/b
98 A dir1/dir2/b
99
99
100 Merge creates 2-parent revision of directory revlog
100 Merge creates 2-parent revision of directory revlog
101
101
102 $ echo 5 > dir1/a
102 $ echo 5 > dir1/a
103 $ hg ci -Aqm 'modify dir1/a'
103 $ hg ci -Aqm 'modify dir1/a'
104 $ hg co '.^'
104 $ hg co '.^'
105 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
105 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
106 $ echo 6 > dir1/b
106 $ echo 6 > dir1/b
107 $ hg ci -Aqm 'modify dir1/b'
107 $ hg ci -Aqm 'modify dir1/b'
108 $ hg merge 'desc("modify dir1/a")'
108 $ hg merge 'desc("modify dir1/a")'
109 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
109 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
110 (branch merge, don't forget to commit)
110 (branch merge, don't forget to commit)
111 $ hg ci -m 'conflict-free merge involving dir1/'
111 $ hg ci -m 'conflict-free merge involving dir1/'
112 $ cat dir1/a
112 $ cat dir1/a
113 5
113 5
114 $ cat dir1/b
114 $ cat dir1/b
115 6
115 6
116 $ hg debugindex --dir dir1
116 $ hg debugindex --dir dir1
117 rev offset length base linkrev nodeid p1 p2
117 rev offset length base linkrev nodeid p1 p2
118 0 0 54 0 1 8b3ffd73f901 000000000000 000000000000
118 0 0 54 0 1 8b3ffd73f901 000000000000 000000000000
119 1 54 68 0 2 b66d046c644f 8b3ffd73f901 000000000000
119 1 54 68 0 2 b66d046c644f 8b3ffd73f901 000000000000
120 2 122 12 0 4 b87265673c8a b66d046c644f 000000000000
120 2 122 12 0 4 b87265673c8a b66d046c644f 000000000000
121 3 134 95 0 5 aa5d3adcec72 b66d046c644f 000000000000
121 3 134 95 0 5 aa5d3adcec72 b66d046c644f 000000000000
122 4 229 81 0 6 e29b066b91ad b66d046c644f 000000000000
122 4 229 81 0 6 e29b066b91ad b66d046c644f 000000000000
123 5 310 107 5 7 a120ce2b83f5 e29b066b91ad aa5d3adcec72
123 5 310 107 5 7 a120ce2b83f5 e29b066b91ad aa5d3adcec72
124
124
125 Merge keeping directory from parent 1 does not create revlog entry. (Note that
125 Merge keeping directory from parent 1 does not create revlog entry. (Note that
126 dir1's manifest does change, but only because dir1/a's filelog changes.)
126 dir1's manifest does change, but only because dir1/a's filelog changes.)
127
127
128 $ hg co 'desc("add dir2")'
128 $ hg co 'desc("add dir2")'
129 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
129 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
130 $ echo 8 > dir2/a
130 $ echo 8 > dir2/a
131 $ hg ci -m 'modify dir2/a'
131 $ hg ci -m 'modify dir2/a'
132 created new head
132 created new head
133
133
134 $ hg debugindex --dir dir2 > before
134 $ hg debugindex --dir dir2 > before
135 $ hg merge 'desc("modify dir1/a")'
135 $ hg merge 'desc("modify dir1/a")'
136 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
136 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
137 (branch merge, don't forget to commit)
137 (branch merge, don't forget to commit)
138 $ hg revert -r 'desc("modify dir2/a")' .
138 $ hg revert -r 'desc("modify dir2/a")' .
139 reverting dir1/a (glob)
139 reverting dir1/a (glob)
140 $ hg ci -m 'merge, keeping parent 1'
140 $ hg ci -m 'merge, keeping parent 1'
141 $ hg debugindex --dir dir2 > after
141 $ hg debugindex --dir dir2 > after
142 $ diff before after
142 $ diff before after
143 $ rm before after
143 $ rm before after
144
144
145 Merge keeping directory from parent 2 does not create revlog entry. (Note that
145 Merge keeping directory from parent 2 does not create revlog entry. (Note that
146 dir2's manifest does change, but only because dir2/a's filelog changes.)
146 dir2's manifest does change, but only because dir2/a's filelog changes.)
147
147
148 $ hg co 'desc("modify dir2/a")'
148 $ hg co 'desc("modify dir2/a")'
149 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
149 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
150 $ hg debugindex --dir dir1 > before
150 $ hg debugindex --dir dir1 > 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 dir1/a")' .
154 $ hg revert -r 'desc("modify dir1/a")' .
155 reverting dir2/a (glob)
155 reverting dir2/a (glob)
156 $ hg ci -m 'merge, keeping parent 2'
156 $ hg ci -m 'merge, keeping parent 2'
157 created new head
157 created new head
158 $ hg debugindex --dir dir1 > after
158 $ hg debugindex --dir dir1 > after
159 $ diff before after
159 $ diff before after
160 $ rm before after
160 $ rm before after
161
161
162 Create flat source repo for tests with mixed flat/tree manifests
162 Create flat source repo for tests with mixed flat/tree manifests
163
163
164 $ cd ..
164 $ cd ..
165 $ hg init repo-flat
165 $ hg init repo-flat
166 $ cd repo-flat
166 $ cd repo-flat
167
167
168 Create a few commits with flat manifest
168 Create a few commits with flat manifest
169
169
170 $ echo 0 > a
170 $ echo 0 > a
171 $ echo 0 > b
171 $ echo 0 > b
172 $ echo 0 > e
172 $ echo 0 > e
173 $ for d in dir1 dir1/dir1 dir1/dir2 dir2
173 $ for d in dir1 dir1/dir1 dir1/dir2 dir2
174 > do
174 > do
175 > mkdir $d
175 > mkdir $d
176 > echo 0 > $d/a
176 > echo 0 > $d/a
177 > echo 0 > $d/b
177 > echo 0 > $d/b
178 > done
178 > done
179 $ hg ci -Aqm initial
179 $ hg ci -Aqm initial
180
180
181 $ echo 1 > a
181 $ echo 1 > a
182 $ echo 1 > dir1/a
182 $ echo 1 > dir1/a
183 $ echo 1 > dir1/dir1/a
183 $ echo 1 > dir1/dir1/a
184 $ hg ci -Aqm 'modify on branch 1'
184 $ hg ci -Aqm 'modify on branch 1'
185
185
186 $ hg co 0
186 $ hg co 0
187 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
187 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
188 $ echo 2 > b
188 $ echo 2 > b
189 $ echo 2 > dir1/b
189 $ echo 2 > dir1/b
190 $ echo 2 > dir1/dir1/b
190 $ echo 2 > dir1/dir1/b
191 $ hg ci -Aqm 'modify on branch 2'
191 $ hg ci -Aqm 'modify on branch 2'
192
192
193 $ hg merge 1
193 $ hg merge 1
194 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
194 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
195 (branch merge, don't forget to commit)
195 (branch merge, don't forget to commit)
196 $ hg ci -m 'merge of flat manifests to new flat manifest'
196 $ hg ci -m 'merge of flat manifests to new flat manifest'
197
197
198 Create clone with tree manifests enabled
198 Create clone with tree manifests enabled
199
199
200 $ cd ..
200 $ cd ..
201 $ hg clone --pull --config experimental.treemanifest=1 repo-flat repo-mixed
201 $ hg clone --pull --config experimental.treemanifest=1 repo-flat repo-mixed
202 requesting all changes
202 requesting all changes
203 adding changesets
203 adding changesets
204 adding manifests
204 adding manifests
205 adding file changes
205 adding file changes
206 added 4 changesets with 17 changes to 11 files
206 added 4 changesets with 17 changes to 11 files
207 updating to branch default
207 updating to branch default
208 11 files updated, 0 files merged, 0 files removed, 0 files unresolved
208 11 files updated, 0 files merged, 0 files removed, 0 files unresolved
209 $ cd repo-mixed
209 $ cd repo-mixed
210 $ test -f .hg/store/meta
210 $ test -f .hg/store/meta
211 [1]
211 [1]
212 $ grep treemanifest .hg/requires
212 $ grep treemanifest .hg/requires
213 treemanifest
213 treemanifest
214
214
215 Commit should store revlog per directory
215 Commit should store revlog per directory
216
216
217 $ hg co 1
217 $ hg co 1
218 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
218 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
219 $ echo 3 > a
219 $ echo 3 > a
220 $ echo 3 > dir1/a
220 $ echo 3 > dir1/a
221 $ echo 3 > dir1/dir1/a
221 $ echo 3 > dir1/dir1/a
222 $ hg ci -m 'first tree'
222 $ hg ci -m 'first tree'
223 created new head
223 created new head
224 $ find .hg/store/meta | sort
224 $ find .hg/store/meta | sort
225 .hg/store/meta
225 .hg/store/meta
226 .hg/store/meta/dir1
226 .hg/store/meta/dir1
227 .hg/store/meta/dir1/00manifest.i
227 .hg/store/meta/dir1/00manifest.i
228 .hg/store/meta/dir1/dir1
228 .hg/store/meta/dir1/dir1
229 .hg/store/meta/dir1/dir1/00manifest.i
229 .hg/store/meta/dir1/dir1/00manifest.i
230 .hg/store/meta/dir1/dir2
230 .hg/store/meta/dir1/dir2
231 .hg/store/meta/dir1/dir2/00manifest.i
231 .hg/store/meta/dir1/dir2/00manifest.i
232 .hg/store/meta/dir2
232 .hg/store/meta/dir2
233 .hg/store/meta/dir2/00manifest.i
233 .hg/store/meta/dir2/00manifest.i
234
234
235 Merge of two trees
235 Merge of two trees
236
236
237 $ hg co 2
237 $ hg co 2
238 6 files updated, 0 files merged, 0 files removed, 0 files unresolved
238 6 files updated, 0 files merged, 0 files removed, 0 files unresolved
239 $ hg merge 1
239 $ hg merge 1
240 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
240 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
241 (branch merge, don't forget to commit)
241 (branch merge, don't forget to commit)
242 $ hg ci -m 'merge of flat manifests to new tree manifest'
242 $ hg ci -m 'merge of flat manifests to new tree manifest'
243 created new head
243 created new head
244 $ hg diff -r 3
244 $ hg diff -r 3
245
245
246 Parent of tree root manifest should be flat manifest, and two for merge
246 Parent of tree root manifest should be flat manifest, and two for merge
247
247
248 $ hg debugindex -m
248 $ hg debugindex -m
249 rev offset length base linkrev nodeid p1 p2
249 rev offset length base linkrev nodeid p1 p2
250 0 0 80 0 0 40536115ed9e 000000000000 000000000000
250 0 0 80 0 0 40536115ed9e 000000000000 000000000000
251 1 80 83 0 1 f3376063c255 40536115ed9e 000000000000
251 1 80 83 0 1 f3376063c255 40536115ed9e 000000000000
252 2 163 103 0 2 5d9b9da231a2 40536115ed9e 000000000000
252 2 163 103 0 2 5d9b9da231a2 40536115ed9e 000000000000
253 3 266 83 0 3 d17d663cbd8a 5d9b9da231a2 f3376063c255
253 3 266 83 0 3 d17d663cbd8a 5d9b9da231a2 f3376063c255
254 4 349 132 4 4 c05a51345f86 f3376063c255 000000000000
254 4 349 132 4 4 c05a51345f86 f3376063c255 000000000000
255 5 481 110 4 5 82594b1f557d 5d9b9da231a2 f3376063c255
255 5 481 110 4 5 82594b1f557d 5d9b9da231a2 f3376063c255
256
256
257
257
258 Status across flat/tree boundary should work
258 Status across flat/tree boundary should work
259
259
260 $ hg status --rev '.^' --rev .
260 $ hg status --rev '.^' --rev .
261 M a
261 M a
262 M dir1/a
262 M dir1/a
263 M dir1/dir1/a
263 M dir1/dir1/a
264
264
265
265
266 Turning off treemanifest config has no effect
266 Turning off treemanifest config has no effect
267
267
268 $ hg debugindex .hg/store/meta/dir1/00manifest.i
268 $ hg debugindex .hg/store/meta/dir1/00manifest.i
269 rev offset length base linkrev nodeid p1 p2
269 rev offset length base linkrev nodeid p1 p2
270 0 0 125 0 4 63c9c0557d24 000000000000 000000000000
270 0 0 125 0 4 63c9c0557d24 000000000000 000000000000
271 1 125 109 0 5 23d12a1f6e0e 000000000000 000000000000
271 1 125 109 0 5 23d12a1f6e0e 000000000000 000000000000
272 $ echo 2 > dir1/a
272 $ echo 2 > dir1/a
273 $ hg --config experimental.treemanifest=False ci -qm 'modify dir1/a'
273 $ hg --config experimental.treemanifest=False ci -qm 'modify dir1/a'
274 $ hg debugindex .hg/store/meta/dir1/00manifest.i
274 $ hg debugindex .hg/store/meta/dir1/00manifest.i
275 rev offset length base linkrev nodeid p1 p2
275 rev offset length base linkrev nodeid p1 p2
276 0 0 125 0 4 63c9c0557d24 000000000000 000000000000
276 0 0 125 0 4 63c9c0557d24 000000000000 000000000000
277 1 125 109 0 5 23d12a1f6e0e 000000000000 000000000000
277 1 125 109 0 5 23d12a1f6e0e 000000000000 000000000000
278 2 234 55 0 6 3cb2d87b4250 23d12a1f6e0e 000000000000
278 2 234 55 0 6 3cb2d87b4250 23d12a1f6e0e 000000000000
General Comments 0
You need to be logged in to leave comments. Login now