##// END OF EJS Templates
rust: Update the memmap2 crate to version 0.4.0...
Simon Sapin -
r48795:d1d9510f default
parent child Browse files
Show More
@@ -1,1078 +1,1080 b''
1 # This file is automatically @generated by Cargo.
1 # This file is automatically @generated by Cargo.
2 # It is not intended for manual editing.
2 # It is not intended for manual editing.
3
3 [[package]]
4 [[package]]
4 name = "adler"
5 name = "adler"
5 version = "0.2.3"
6 version = "0.2.3"
6 source = "registry+https://github.com/rust-lang/crates.io-index"
7 source = "registry+https://github.com/rust-lang/crates.io-index"
7 checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e"
8 checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e"
8
9
9 [[package]]
10 [[package]]
10 name = "aho-corasick"
11 name = "aho-corasick"
11 version = "0.7.15"
12 version = "0.7.15"
12 source = "registry+https://github.com/rust-lang/crates.io-index"
13 source = "registry+https://github.com/rust-lang/crates.io-index"
13 checksum = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5"
14 checksum = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5"
14 dependencies = [
15 dependencies = [
15 "memchr",
16 "memchr",
16 ]
17 ]
17
18
18 [[package]]
19 [[package]]
19 name = "ansi_term"
20 name = "ansi_term"
20 version = "0.11.0"
21 version = "0.11.0"
21 source = "registry+https://github.com/rust-lang/crates.io-index"
22 source = "registry+https://github.com/rust-lang/crates.io-index"
22 checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
23 checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
23 dependencies = [
24 dependencies = [
24 "winapi",
25 "winapi",
25 ]
26 ]
26
27
27 [[package]]
28 [[package]]
28 name = "atty"
29 name = "atty"
29 version = "0.2.14"
30 version = "0.2.14"
30 source = "registry+https://github.com/rust-lang/crates.io-index"
31 source = "registry+https://github.com/rust-lang/crates.io-index"
31 checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
32 checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
32 dependencies = [
33 dependencies = [
33 "hermit-abi",
34 "hermit-abi",
34 "libc",
35 "libc",
35 "winapi",
36 "winapi",
36 ]
37 ]
37
38
38 [[package]]
39 [[package]]
39 name = "autocfg"
40 name = "autocfg"
40 version = "1.0.1"
41 version = "1.0.1"
41 source = "registry+https://github.com/rust-lang/crates.io-index"
42 source = "registry+https://github.com/rust-lang/crates.io-index"
42 checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
43 checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
43
44
44 [[package]]
45 [[package]]
45 name = "bitflags"
46 name = "bitflags"
46 version = "1.2.1"
47 version = "1.2.1"
47 source = "registry+https://github.com/rust-lang/crates.io-index"
48 source = "registry+https://github.com/rust-lang/crates.io-index"
48 checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
49 checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
49
50
50 [[package]]
51 [[package]]
51 name = "bitmaps"
52 name = "bitmaps"
52 version = "2.1.0"
53 version = "2.1.0"
53 source = "registry+https://github.com/rust-lang/crates.io-index"
54 source = "registry+https://github.com/rust-lang/crates.io-index"
54 checksum = "031043d04099746d8db04daf1fa424b2bc8bd69d92b25962dcde24da39ab64a2"
55 checksum = "031043d04099746d8db04daf1fa424b2bc8bd69d92b25962dcde24da39ab64a2"
55 dependencies = [
56 dependencies = [
56 "typenum",
57 "typenum",
57 ]
58 ]
58
59
59 [[package]]
60 [[package]]
60 name = "block-buffer"
61 name = "block-buffer"
61 version = "0.9.0"
62 version = "0.9.0"
62 source = "registry+https://github.com/rust-lang/crates.io-index"
63 source = "registry+https://github.com/rust-lang/crates.io-index"
63 checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
64 checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
64 dependencies = [
65 dependencies = [
65 "generic-array",
66 "generic-array",
66 ]
67 ]
67
68
68 [[package]]
69 [[package]]
69 name = "byteorder"
70 name = "byteorder"
70 version = "1.3.4"
71 version = "1.3.4"
71 source = "registry+https://github.com/rust-lang/crates.io-index"
72 source = "registry+https://github.com/rust-lang/crates.io-index"
72 checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de"
73 checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de"
73
74
74 [[package]]
75 [[package]]
75 name = "bytes-cast"
76 name = "bytes-cast"
76 version = "0.2.0"
77 version = "0.2.0"
77 source = "registry+https://github.com/rust-lang/crates.io-index"
78 source = "registry+https://github.com/rust-lang/crates.io-index"
78 checksum = "0d434f9a4ecbe987e7ccfda7274b6f82ea52c9b63742565a65cb5e8ba0f2c452"
79 checksum = "0d434f9a4ecbe987e7ccfda7274b6f82ea52c9b63742565a65cb5e8ba0f2c452"
79 dependencies = [
80 dependencies = [
80 "bytes-cast-derive",
81 "bytes-cast-derive",
81 ]
82 ]
82
83
83 [[package]]
84 [[package]]
84 name = "bytes-cast-derive"
85 name = "bytes-cast-derive"
85 version = "0.1.0"
86 version = "0.1.0"
86 source = "registry+https://github.com/rust-lang/crates.io-index"
87 source = "registry+https://github.com/rust-lang/crates.io-index"
87 checksum = "cb936af9de38476664d6b58e529aff30d482e4ce1c5e150293d00730b0d81fdb"
88 checksum = "cb936af9de38476664d6b58e529aff30d482e4ce1c5e150293d00730b0d81fdb"
88 dependencies = [
89 dependencies = [
89 "proc-macro2",
90 "proc-macro2",
90 "quote",
91 "quote",
91 "syn",
92 "syn",
92 ]
93 ]
93
94
94 [[package]]
95 [[package]]
95 name = "cc"
96 name = "cc"
96 version = "1.0.66"
97 version = "1.0.66"
97 source = "registry+https://github.com/rust-lang/crates.io-index"
98 source = "registry+https://github.com/rust-lang/crates.io-index"
98 checksum = "4c0496836a84f8d0495758516b8621a622beb77c0fed418570e50764093ced48"
99 checksum = "4c0496836a84f8d0495758516b8621a622beb77c0fed418570e50764093ced48"
99 dependencies = [
100 dependencies = [
100 "jobserver",
101 "jobserver",
101 ]
102 ]
102
103
103 [[package]]
104 [[package]]
104 name = "cfg-if"
105 name = "cfg-if"
105 version = "0.1.10"
106 version = "0.1.10"
106 source = "registry+https://github.com/rust-lang/crates.io-index"
107 source = "registry+https://github.com/rust-lang/crates.io-index"
107 checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
108 checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
108
109
109 [[package]]
110 [[package]]
110 name = "cfg-if"
111 name = "cfg-if"
111 version = "1.0.0"
112 version = "1.0.0"
112 source = "registry+https://github.com/rust-lang/crates.io-index"
113 source = "registry+https://github.com/rust-lang/crates.io-index"
113 checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
114 checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
114
115
115 [[package]]
116 [[package]]
116 name = "chrono"
117 name = "chrono"
117 version = "0.4.19"
118 version = "0.4.19"
118 source = "registry+https://github.com/rust-lang/crates.io-index"
119 source = "registry+https://github.com/rust-lang/crates.io-index"
119 checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73"
120 checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73"
120 dependencies = [
121 dependencies = [
121 "libc",
122 "libc",
122 "num-integer",
123 "num-integer",
123 "num-traits",
124 "num-traits",
124 "time",
125 "time",
125 "winapi",
126 "winapi",
126 ]
127 ]
127
128
128 [[package]]
129 [[package]]
129 name = "clap"
130 name = "clap"
130 version = "2.33.3"
131 version = "2.33.3"
131 source = "registry+https://github.com/rust-lang/crates.io-index"
132 source = "registry+https://github.com/rust-lang/crates.io-index"
132 checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002"
133 checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002"
133 dependencies = [
134 dependencies = [
134 "ansi_term",
135 "ansi_term",
135 "atty",
136 "atty",
136 "bitflags",
137 "bitflags",
137 "strsim",
138 "strsim",
138 "textwrap",
139 "textwrap",
139 "unicode-width",
140 "unicode-width",
140 "vec_map",
141 "vec_map",
141 ]
142 ]
142
143
143 [[package]]
144 [[package]]
144 name = "const_fn"
145 name = "const_fn"
145 version = "0.4.4"
146 version = "0.4.4"
146 source = "registry+https://github.com/rust-lang/crates.io-index"
147 source = "registry+https://github.com/rust-lang/crates.io-index"
147 checksum = "cd51eab21ab4fd6a3bf889e2d0958c0a6e3a61ad04260325e919e652a2a62826"
148 checksum = "cd51eab21ab4fd6a3bf889e2d0958c0a6e3a61ad04260325e919e652a2a62826"
148
149
149 [[package]]
150 [[package]]
150 name = "cpufeatures"
151 name = "cpufeatures"
151 version = "0.1.4"
152 version = "0.1.4"
152 source = "registry+https://github.com/rust-lang/crates.io-index"
153 source = "registry+https://github.com/rust-lang/crates.io-index"
153 checksum = "ed00c67cb5d0a7d64a44f6ad2668db7e7530311dd53ea79bcd4fb022c64911c8"
154 checksum = "ed00c67cb5d0a7d64a44f6ad2668db7e7530311dd53ea79bcd4fb022c64911c8"
154 dependencies = [
155 dependencies = [
155 "libc",
156 "libc",
156 ]
157 ]
157
158
158 [[package]]
159 [[package]]
159 name = "cpython"
160 name = "cpython"
160 version = "0.6.0"
161 version = "0.6.0"
161 source = "registry+https://github.com/rust-lang/crates.io-index"
162 source = "registry+https://github.com/rust-lang/crates.io-index"
162 checksum = "8094679a4e9bfc8035572162624bc800eda35b5f9eff2537b9cd9aacc3d9782e"
163 checksum = "8094679a4e9bfc8035572162624bc800eda35b5f9eff2537b9cd9aacc3d9782e"
163 dependencies = [
164 dependencies = [
164 "libc",
165 "libc",
165 "num-traits",
166 "num-traits",
166 "paste",
167 "paste",
167 "python27-sys",
168 "python27-sys",
168 "python3-sys",
169 "python3-sys",
169 ]
170 ]
170
171
171 [[package]]
172 [[package]]
172 name = "crc32fast"
173 name = "crc32fast"
173 version = "1.2.1"
174 version = "1.2.1"
174 source = "registry+https://github.com/rust-lang/crates.io-index"
175 source = "registry+https://github.com/rust-lang/crates.io-index"
175 checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a"
176 checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a"
176 dependencies = [
177 dependencies = [
177 "cfg-if 1.0.0",
178 "cfg-if 1.0.0",
178 ]
179 ]
179
180
180 [[package]]
181 [[package]]
181 name = "crossbeam-channel"
182 name = "crossbeam-channel"
182 version = "0.4.4"
183 version = "0.4.4"
183 source = "registry+https://github.com/rust-lang/crates.io-index"
184 source = "registry+https://github.com/rust-lang/crates.io-index"
184 checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87"
185 checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87"
185 dependencies = [
186 dependencies = [
186 "crossbeam-utils 0.7.2",
187 "crossbeam-utils 0.7.2",
187 "maybe-uninit",
188 "maybe-uninit",
188 ]
189 ]
189
190
190 [[package]]
191 [[package]]
191 name = "crossbeam-channel"
192 name = "crossbeam-channel"
192 version = "0.5.0"
193 version = "0.5.0"
193 source = "registry+https://github.com/rust-lang/crates.io-index"
194 source = "registry+https://github.com/rust-lang/crates.io-index"
194 checksum = "dca26ee1f8d361640700bde38b2c37d8c22b3ce2d360e1fc1c74ea4b0aa7d775"
195 checksum = "dca26ee1f8d361640700bde38b2c37d8c22b3ce2d360e1fc1c74ea4b0aa7d775"
195 dependencies = [
196 dependencies = [
196 "cfg-if 1.0.0",
197 "cfg-if 1.0.0",
197 "crossbeam-utils 0.8.1",
198 "crossbeam-utils 0.8.1",
198 ]
199 ]
199
200
200 [[package]]
201 [[package]]
201 name = "crossbeam-deque"
202 name = "crossbeam-deque"
202 version = "0.8.0"
203 version = "0.8.0"
203 source = "registry+https://github.com/rust-lang/crates.io-index"
204 source = "registry+https://github.com/rust-lang/crates.io-index"
204 checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9"
205 checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9"
205 dependencies = [
206 dependencies = [
206 "cfg-if 1.0.0",
207 "cfg-if 1.0.0",
207 "crossbeam-epoch",
208 "crossbeam-epoch",
208 "crossbeam-utils 0.8.1",
209 "crossbeam-utils 0.8.1",
209 ]
210 ]
210
211
211 [[package]]
212 [[package]]
212 name = "crossbeam-epoch"
213 name = "crossbeam-epoch"
213 version = "0.9.1"
214 version = "0.9.1"
214 source = "registry+https://github.com/rust-lang/crates.io-index"
215 source = "registry+https://github.com/rust-lang/crates.io-index"
215 checksum = "a1aaa739f95311c2c7887a76863f500026092fb1dce0161dab577e559ef3569d"
216 checksum = "a1aaa739f95311c2c7887a76863f500026092fb1dce0161dab577e559ef3569d"
216 dependencies = [
217 dependencies = [
217 "cfg-if 1.0.0",
218 "cfg-if 1.0.0",
218 "const_fn",
219 "const_fn",
219 "crossbeam-utils 0.8.1",
220 "crossbeam-utils 0.8.1",
220 "lazy_static",
221 "lazy_static",
221 "memoffset",
222 "memoffset",
222 "scopeguard",
223 "scopeguard",
223 ]
224 ]
224
225
225 [[package]]
226 [[package]]
226 name = "crossbeam-utils"
227 name = "crossbeam-utils"
227 version = "0.7.2"
228 version = "0.7.2"
228 source = "registry+https://github.com/rust-lang/crates.io-index"
229 source = "registry+https://github.com/rust-lang/crates.io-index"
229 checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8"
230 checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8"
230 dependencies = [
231 dependencies = [
231 "autocfg",
232 "autocfg",
232 "cfg-if 0.1.10",
233 "cfg-if 0.1.10",
233 "lazy_static",
234 "lazy_static",
234 ]
235 ]
235
236
236 [[package]]
237 [[package]]
237 name = "crossbeam-utils"
238 name = "crossbeam-utils"
238 version = "0.8.1"
239 version = "0.8.1"
239 source = "registry+https://github.com/rust-lang/crates.io-index"
240 source = "registry+https://github.com/rust-lang/crates.io-index"
240 checksum = "02d96d1e189ef58269ebe5b97953da3274d83a93af647c2ddd6f9dab28cedb8d"
241 checksum = "02d96d1e189ef58269ebe5b97953da3274d83a93af647c2ddd6f9dab28cedb8d"
241 dependencies = [
242 dependencies = [
242 "autocfg",
243 "autocfg",
243 "cfg-if 1.0.0",
244 "cfg-if 1.0.0",
244 "lazy_static",
245 "lazy_static",
245 ]
246 ]
246
247
247 [[package]]
248 [[package]]
248 name = "ctor"
249 name = "ctor"
249 version = "0.1.16"
250 version = "0.1.16"
250 source = "registry+https://github.com/rust-lang/crates.io-index"
251 source = "registry+https://github.com/rust-lang/crates.io-index"
251 checksum = "7fbaabec2c953050352311293be5c6aba8e141ba19d6811862b232d6fd020484"
252 checksum = "7fbaabec2c953050352311293be5c6aba8e141ba19d6811862b232d6fd020484"
252 dependencies = [
253 dependencies = [
253 "quote",
254 "quote",
254 "syn",
255 "syn",
255 ]
256 ]
256
257
257 [[package]]
258 [[package]]
258 name = "derive_more"
259 name = "derive_more"
259 version = "0.99.11"
260 version = "0.99.11"
260 source = "registry+https://github.com/rust-lang/crates.io-index"
261 source = "registry+https://github.com/rust-lang/crates.io-index"
261 checksum = "41cb0e6161ad61ed084a36ba71fbba9e3ac5aee3606fb607fe08da6acbcf3d8c"
262 checksum = "41cb0e6161ad61ed084a36ba71fbba9e3ac5aee3606fb607fe08da6acbcf3d8c"
262 dependencies = [
263 dependencies = [
263 "proc-macro2",
264 "proc-macro2",
264 "quote",
265 "quote",
265 "syn",
266 "syn",
266 ]
267 ]
267
268
268 [[package]]
269 [[package]]
269 name = "difference"
270 name = "difference"
270 version = "2.0.0"
271 version = "2.0.0"
271 source = "registry+https://github.com/rust-lang/crates.io-index"
272 source = "registry+https://github.com/rust-lang/crates.io-index"
272 checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198"
273 checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198"
273
274
274 [[package]]
275 [[package]]
275 name = "digest"
276 name = "digest"
276 version = "0.9.0"
277 version = "0.9.0"
277 source = "registry+https://github.com/rust-lang/crates.io-index"
278 source = "registry+https://github.com/rust-lang/crates.io-index"
278 checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"
279 checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"
279 dependencies = [
280 dependencies = [
280 "generic-array",
281 "generic-array",
281 ]
282 ]
282
283
283 [[package]]
284 [[package]]
284 name = "either"
285 name = "either"
285 version = "1.6.1"
286 version = "1.6.1"
286 source = "registry+https://github.com/rust-lang/crates.io-index"
287 source = "registry+https://github.com/rust-lang/crates.io-index"
287 checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
288 checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
288
289
289 [[package]]
290 [[package]]
290 name = "env_logger"
291 name = "env_logger"
291 version = "0.7.1"
292 version = "0.7.1"
292 source = "registry+https://github.com/rust-lang/crates.io-index"
293 source = "registry+https://github.com/rust-lang/crates.io-index"
293 checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36"
294 checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36"
294 dependencies = [
295 dependencies = [
295 "atty",
296 "atty",
296 "humantime",
297 "humantime",
297 "log",
298 "log",
298 "regex",
299 "regex",
299 "termcolor",
300 "termcolor",
300 ]
301 ]
301
302
302 [[package]]
303 [[package]]
303 name = "flate2"
304 name = "flate2"
304 version = "1.0.19"
305 version = "1.0.19"
305 source = "registry+https://github.com/rust-lang/crates.io-index"
306 source = "registry+https://github.com/rust-lang/crates.io-index"
306 checksum = "7411863d55df97a419aa64cb4d2f167103ea9d767e2c54a1868b7ac3f6b47129"
307 checksum = "7411863d55df97a419aa64cb4d2f167103ea9d767e2c54a1868b7ac3f6b47129"
307 dependencies = [
308 dependencies = [
308 "cfg-if 1.0.0",
309 "cfg-if 1.0.0",
309 "crc32fast",
310 "crc32fast",
310 "libc",
311 "libc",
311 "libz-sys",
312 "libz-sys",
312 "miniz_oxide",
313 "miniz_oxide",
313 ]
314 ]
314
315
315 [[package]]
316 [[package]]
316 name = "format-bytes"
317 name = "format-bytes"
317 version = "0.2.2"
318 version = "0.2.2"
318 source = "registry+https://github.com/rust-lang/crates.io-index"
319 source = "registry+https://github.com/rust-lang/crates.io-index"
319 checksum = "1c4e89040c7fd7b4e6ba2820ac705a45def8a0c098ec78d170ae88f1ef1d5762"
320 checksum = "1c4e89040c7fd7b4e6ba2820ac705a45def8a0c098ec78d170ae88f1ef1d5762"
320 dependencies = [
321 dependencies = [
321 "format-bytes-macros",
322 "format-bytes-macros",
322 "proc-macro-hack",
323 "proc-macro-hack",
323 ]
324 ]
324
325
325 [[package]]
326 [[package]]
326 name = "format-bytes-macros"
327 name = "format-bytes-macros"
327 version = "0.3.0"
328 version = "0.3.0"
328 source = "registry+https://github.com/rust-lang/crates.io-index"
329 source = "registry+https://github.com/rust-lang/crates.io-index"
329 checksum = "b05089e341a0460449e2210c3bf7b61597860b07f0deae58da38dbed0a4c6b6d"
330 checksum = "b05089e341a0460449e2210c3bf7b61597860b07f0deae58da38dbed0a4c6b6d"
330 dependencies = [
331 dependencies = [
331 "proc-macro-hack",
332 "proc-macro-hack",
332 "proc-macro2",
333 "proc-macro2",
333 "quote",
334 "quote",
334 "syn",
335 "syn",
335 ]
336 ]
336
337
337 [[package]]
338 [[package]]
338 name = "generic-array"
339 name = "generic-array"
339 version = "0.14.4"
340 version = "0.14.4"
340 source = "registry+https://github.com/rust-lang/crates.io-index"
341 source = "registry+https://github.com/rust-lang/crates.io-index"
341 checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817"
342 checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817"
342 dependencies = [
343 dependencies = [
343 "typenum",
344 "typenum",
344 "version_check",
345 "version_check",
345 ]
346 ]
346
347
347 [[package]]
348 [[package]]
348 name = "getrandom"
349 name = "getrandom"
349 version = "0.1.15"
350 version = "0.1.15"
350 source = "registry+https://github.com/rust-lang/crates.io-index"
351 source = "registry+https://github.com/rust-lang/crates.io-index"
351 checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6"
352 checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6"
352 dependencies = [
353 dependencies = [
353 "cfg-if 0.1.10",
354 "cfg-if 0.1.10",
354 "libc",
355 "libc",
355 "wasi 0.9.0+wasi-snapshot-preview1",
356 "wasi 0.9.0+wasi-snapshot-preview1",
356 ]
357 ]
357
358
358 [[package]]
359 [[package]]
359 name = "glob"
360 name = "glob"
360 version = "0.3.0"
361 version = "0.3.0"
361 source = "registry+https://github.com/rust-lang/crates.io-index"
362 source = "registry+https://github.com/rust-lang/crates.io-index"
362 checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
363 checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
363
364
364 [[package]]
365 [[package]]
365 name = "hermit-abi"
366 name = "hermit-abi"
366 version = "0.1.17"
367 version = "0.1.17"
367 source = "registry+https://github.com/rust-lang/crates.io-index"
368 source = "registry+https://github.com/rust-lang/crates.io-index"
368 checksum = "5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8"
369 checksum = "5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8"
369 dependencies = [
370 dependencies = [
370 "libc",
371 "libc",
371 ]
372 ]
372
373
373 [[package]]
374 [[package]]
374 name = "hg-core"
375 name = "hg-core"
375 version = "0.1.0"
376 version = "0.1.0"
376 dependencies = [
377 dependencies = [
377 "byteorder",
378 "byteorder",
378 "bytes-cast",
379 "bytes-cast",
379 "clap",
380 "clap",
380 "crossbeam-channel 0.4.4",
381 "crossbeam-channel 0.4.4",
381 "derive_more",
382 "derive_more",
382 "flate2",
383 "flate2",
383 "format-bytes",
384 "format-bytes",
384 "home",
385 "home",
385 "im-rc",
386 "im-rc",
386 "itertools",
387 "itertools",
387 "lazy_static",
388 "lazy_static",
388 "log",
389 "log",
389 "memmap2",
390 "memmap2",
390 "micro-timer",
391 "micro-timer",
391 "pretty_assertions",
392 "pretty_assertions",
392 "rand",
393 "rand",
393 "rand_distr",
394 "rand_distr",
394 "rand_pcg",
395 "rand_pcg",
395 "rayon",
396 "rayon",
396 "regex",
397 "regex",
397 "same-file",
398 "same-file",
398 "sha-1",
399 "sha-1",
399 "stable_deref_trait",
400 "stable_deref_trait",
400 "tempfile",
401 "tempfile",
401 "twox-hash",
402 "twox-hash",
402 "zstd",
403 "zstd",
403 ]
404 ]
404
405
405 [[package]]
406 [[package]]
406 name = "hg-cpython"
407 name = "hg-cpython"
407 version = "0.1.0"
408 version = "0.1.0"
408 dependencies = [
409 dependencies = [
409 "cpython",
410 "cpython",
410 "crossbeam-channel 0.4.4",
411 "crossbeam-channel 0.4.4",
411 "env_logger",
412 "env_logger",
412 "hg-core",
413 "hg-core",
413 "libc",
414 "libc",
414 "log",
415 "log",
415 "stable_deref_trait",
416 "stable_deref_trait",
416 ]
417 ]
417
418
418 [[package]]
419 [[package]]
419 name = "home"
420 name = "home"
420 version = "0.5.3"
421 version = "0.5.3"
421 source = "registry+https://github.com/rust-lang/crates.io-index"
422 source = "registry+https://github.com/rust-lang/crates.io-index"
422 checksum = "2456aef2e6b6a9784192ae780c0f15bc57df0e918585282325e8c8ac27737654"
423 checksum = "2456aef2e6b6a9784192ae780c0f15bc57df0e918585282325e8c8ac27737654"
423 dependencies = [
424 dependencies = [
424 "winapi",
425 "winapi",
425 ]
426 ]
426
427
427 [[package]]
428 [[package]]
428 name = "humantime"
429 name = "humantime"
429 version = "1.3.0"
430 version = "1.3.0"
430 source = "registry+https://github.com/rust-lang/crates.io-index"
431 source = "registry+https://github.com/rust-lang/crates.io-index"
431 checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f"
432 checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f"
432 dependencies = [
433 dependencies = [
433 "quick-error",
434 "quick-error",
434 ]
435 ]
435
436
436 [[package]]
437 [[package]]
437 name = "im-rc"
438 name = "im-rc"
438 version = "15.0.0"
439 version = "15.0.0"
439 source = "registry+https://github.com/rust-lang/crates.io-index"
440 source = "registry+https://github.com/rust-lang/crates.io-index"
440 checksum = "3ca8957e71f04a205cb162508f9326aea04676c8dfd0711220190d6b83664f3f"
441 checksum = "3ca8957e71f04a205cb162508f9326aea04676c8dfd0711220190d6b83664f3f"
441 dependencies = [
442 dependencies = [
442 "bitmaps",
443 "bitmaps",
443 "rand_core",
444 "rand_core",
444 "rand_xoshiro",
445 "rand_xoshiro",
445 "sized-chunks",
446 "sized-chunks",
446 "typenum",
447 "typenum",
447 "version_check",
448 "version_check",
448 ]
449 ]
449
450
450 [[package]]
451 [[package]]
451 name = "itertools"
452 name = "itertools"
452 version = "0.9.0"
453 version = "0.9.0"
453 source = "registry+https://github.com/rust-lang/crates.io-index"
454 source = "registry+https://github.com/rust-lang/crates.io-index"
454 checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
455 checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
455 dependencies = [
456 dependencies = [
456 "either",
457 "either",
457 ]
458 ]
458
459
459 [[package]]
460 [[package]]
460 name = "jobserver"
461 name = "jobserver"
461 version = "0.1.21"
462 version = "0.1.21"
462 source = "registry+https://github.com/rust-lang/crates.io-index"
463 source = "registry+https://github.com/rust-lang/crates.io-index"
463 checksum = "5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2"
464 checksum = "5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2"
464 dependencies = [
465 dependencies = [
465 "libc",
466 "libc",
466 ]
467 ]
467
468
468 [[package]]
469 [[package]]
469 name = "lazy_static"
470 name = "lazy_static"
470 version = "1.4.0"
471 version = "1.4.0"
471 source = "registry+https://github.com/rust-lang/crates.io-index"
472 source = "registry+https://github.com/rust-lang/crates.io-index"
472 checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
473 checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
473
474
474 [[package]]
475 [[package]]
475 name = "libc"
476 name = "libc"
476 version = "0.2.81"
477 version = "0.2.81"
477 source = "registry+https://github.com/rust-lang/crates.io-index"
478 source = "registry+https://github.com/rust-lang/crates.io-index"
478 checksum = "1482821306169ec4d07f6aca392a4681f66c75c9918aa49641a2595db64053cb"
479 checksum = "1482821306169ec4d07f6aca392a4681f66c75c9918aa49641a2595db64053cb"
479
480
480 [[package]]
481 [[package]]
481 name = "libz-sys"
482 name = "libz-sys"
482 version = "1.1.2"
483 version = "1.1.2"
483 source = "registry+https://github.com/rust-lang/crates.io-index"
484 source = "registry+https://github.com/rust-lang/crates.io-index"
484 checksum = "602113192b08db8f38796c4e85c39e960c145965140e918018bcde1952429655"
485 checksum = "602113192b08db8f38796c4e85c39e960c145965140e918018bcde1952429655"
485 dependencies = [
486 dependencies = [
486 "cc",
487 "cc",
487 "pkg-config",
488 "pkg-config",
488 "vcpkg",
489 "vcpkg",
489 ]
490 ]
490
491
491 [[package]]
492 [[package]]
492 name = "log"
493 name = "log"
493 version = "0.4.11"
494 version = "0.4.11"
494 source = "registry+https://github.com/rust-lang/crates.io-index"
495 source = "registry+https://github.com/rust-lang/crates.io-index"
495 checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b"
496 checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b"
496 dependencies = [
497 dependencies = [
497 "cfg-if 0.1.10",
498 "cfg-if 0.1.10",
498 ]
499 ]
499
500
500 [[package]]
501 [[package]]
501 name = "maybe-uninit"
502 name = "maybe-uninit"
502 version = "2.0.0"
503 version = "2.0.0"
503 source = "registry+https://github.com/rust-lang/crates.io-index"
504 source = "registry+https://github.com/rust-lang/crates.io-index"
504 checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
505 checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
505
506
506 [[package]]
507 [[package]]
507 name = "memchr"
508 name = "memchr"
508 version = "2.3.4"
509 version = "2.3.4"
509 source = "registry+https://github.com/rust-lang/crates.io-index"
510 source = "registry+https://github.com/rust-lang/crates.io-index"
510 checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525"
511 checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525"
511
512
512 [[package]]
513 [[package]]
513 name = "memmap2"
514 name = "memmap2"
514 version = "0.3.1"
515 version = "0.4.0"
515 source = "registry+https://github.com/rust-lang/crates.io-index"
516 source = "registry+https://github.com/rust-lang/crates.io-index"
516 checksum = "00b6c2ebff6180198788f5db08d7ce3bc1d0b617176678831a7510825973e357"
517 checksum = "de5d3112c080d58ce560081baeaab7e1e864ca21795ddbf533d5b1842bb1ecf8"
517 dependencies = [
518 dependencies = [
518 "libc",
519 "libc",
520 "stable_deref_trait",
519 ]
521 ]
520
522
521 [[package]]
523 [[package]]
522 name = "memoffset"
524 name = "memoffset"
523 version = "0.6.1"
525 version = "0.6.1"
524 source = "registry+https://github.com/rust-lang/crates.io-index"
526 source = "registry+https://github.com/rust-lang/crates.io-index"
525 checksum = "157b4208e3059a8f9e78d559edc658e13df41410cb3ae03979c83130067fdd87"
527 checksum = "157b4208e3059a8f9e78d559edc658e13df41410cb3ae03979c83130067fdd87"
526 dependencies = [
528 dependencies = [
527 "autocfg",
529 "autocfg",
528 ]
530 ]
529
531
530 [[package]]
532 [[package]]
531 name = "micro-timer"
533 name = "micro-timer"
532 version = "0.3.1"
534 version = "0.3.1"
533 source = "registry+https://github.com/rust-lang/crates.io-index"
535 source = "registry+https://github.com/rust-lang/crates.io-index"
534 checksum = "2620153e1d903d26b72b89f0e9c48d8c4756cba941c185461dddc234980c298c"
536 checksum = "2620153e1d903d26b72b89f0e9c48d8c4756cba941c185461dddc234980c298c"
535 dependencies = [
537 dependencies = [
536 "micro-timer-macros",
538 "micro-timer-macros",
537 "scopeguard",
539 "scopeguard",
538 ]
540 ]
539
541
540 [[package]]
542 [[package]]
541 name = "micro-timer-macros"
543 name = "micro-timer-macros"
542 version = "0.3.1"
544 version = "0.3.1"
543 source = "registry+https://github.com/rust-lang/crates.io-index"
545 source = "registry+https://github.com/rust-lang/crates.io-index"
544 checksum = "e28a3473e6abd6e9aab36aaeef32ad22ae0bd34e79f376643594c2b152ec1c5d"
546 checksum = "e28a3473e6abd6e9aab36aaeef32ad22ae0bd34e79f376643594c2b152ec1c5d"
545 dependencies = [
547 dependencies = [
546 "proc-macro2",
548 "proc-macro2",
547 "quote",
549 "quote",
548 "scopeguard",
550 "scopeguard",
549 "syn",
551 "syn",
550 ]
552 ]
551
553
552 [[package]]
554 [[package]]
553 name = "miniz_oxide"
555 name = "miniz_oxide"
554 version = "0.4.3"
556 version = "0.4.3"
555 source = "registry+https://github.com/rust-lang/crates.io-index"
557 source = "registry+https://github.com/rust-lang/crates.io-index"
556 checksum = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d"
558 checksum = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d"
557 dependencies = [
559 dependencies = [
558 "adler",
560 "adler",
559 "autocfg",
561 "autocfg",
560 ]
562 ]
561
563
562 [[package]]
564 [[package]]
563 name = "num-integer"
565 name = "num-integer"
564 version = "0.1.44"
566 version = "0.1.44"
565 source = "registry+https://github.com/rust-lang/crates.io-index"
567 source = "registry+https://github.com/rust-lang/crates.io-index"
566 checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db"
568 checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db"
567 dependencies = [
569 dependencies = [
568 "autocfg",
570 "autocfg",
569 "num-traits",
571 "num-traits",
570 ]
572 ]
571
573
572 [[package]]
574 [[package]]
573 name = "num-traits"
575 name = "num-traits"
574 version = "0.2.14"
576 version = "0.2.14"
575 source = "registry+https://github.com/rust-lang/crates.io-index"
577 source = "registry+https://github.com/rust-lang/crates.io-index"
576 checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290"
578 checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290"
577 dependencies = [
579 dependencies = [
578 "autocfg",
580 "autocfg",
579 ]
581 ]
580
582
581 [[package]]
583 [[package]]
582 name = "num_cpus"
584 name = "num_cpus"
583 version = "1.13.0"
585 version = "1.13.0"
584 source = "registry+https://github.com/rust-lang/crates.io-index"
586 source = "registry+https://github.com/rust-lang/crates.io-index"
585 checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3"
587 checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3"
586 dependencies = [
588 dependencies = [
587 "hermit-abi",
589 "hermit-abi",
588 "libc",
590 "libc",
589 ]
591 ]
590
592
591 [[package]]
593 [[package]]
592 name = "opaque-debug"
594 name = "opaque-debug"
593 version = "0.3.0"
595 version = "0.3.0"
594 source = "registry+https://github.com/rust-lang/crates.io-index"
596 source = "registry+https://github.com/rust-lang/crates.io-index"
595 checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
597 checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
596
598
597 [[package]]
599 [[package]]
598 name = "output_vt100"
600 name = "output_vt100"
599 version = "0.1.2"
601 version = "0.1.2"
600 source = "registry+https://github.com/rust-lang/crates.io-index"
602 source = "registry+https://github.com/rust-lang/crates.io-index"
601 checksum = "53cdc5b785b7a58c5aad8216b3dfa114df64b0b06ae6e1501cef91df2fbdf8f9"
603 checksum = "53cdc5b785b7a58c5aad8216b3dfa114df64b0b06ae6e1501cef91df2fbdf8f9"
602 dependencies = [
604 dependencies = [
603 "winapi",
605 "winapi",
604 ]
606 ]
605
607
606 [[package]]
608 [[package]]
607 name = "paste"
609 name = "paste"
608 version = "1.0.5"
610 version = "1.0.5"
609 source = "registry+https://github.com/rust-lang/crates.io-index"
611 source = "registry+https://github.com/rust-lang/crates.io-index"
610 checksum = "acbf547ad0c65e31259204bd90935776d1c693cec2f4ff7abb7a1bbbd40dfe58"
612 checksum = "acbf547ad0c65e31259204bd90935776d1c693cec2f4ff7abb7a1bbbd40dfe58"
611
613
612 [[package]]
614 [[package]]
613 name = "pkg-config"
615 name = "pkg-config"
614 version = "0.3.19"
616 version = "0.3.19"
615 source = "registry+https://github.com/rust-lang/crates.io-index"
617 source = "registry+https://github.com/rust-lang/crates.io-index"
616 checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c"
618 checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c"
617
619
618 [[package]]
620 [[package]]
619 name = "ppv-lite86"
621 name = "ppv-lite86"
620 version = "0.2.10"
622 version = "0.2.10"
621 source = "registry+https://github.com/rust-lang/crates.io-index"
623 source = "registry+https://github.com/rust-lang/crates.io-index"
622 checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"
624 checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"
623
625
624 [[package]]
626 [[package]]
625 name = "pretty_assertions"
627 name = "pretty_assertions"
626 version = "0.6.1"
628 version = "0.6.1"
627 source = "registry+https://github.com/rust-lang/crates.io-index"
629 source = "registry+https://github.com/rust-lang/crates.io-index"
628 checksum = "3f81e1644e1b54f5a68959a29aa86cde704219254669da328ecfdf6a1f09d427"
630 checksum = "3f81e1644e1b54f5a68959a29aa86cde704219254669da328ecfdf6a1f09d427"
629 dependencies = [
631 dependencies = [
630 "ansi_term",
632 "ansi_term",
631 "ctor",
633 "ctor",
632 "difference",
634 "difference",
633 "output_vt100",
635 "output_vt100",
634 ]
636 ]
635
637
636 [[package]]
638 [[package]]
637 name = "proc-macro-hack"
639 name = "proc-macro-hack"
638 version = "0.5.19"
640 version = "0.5.19"
639 source = "registry+https://github.com/rust-lang/crates.io-index"
641 source = "registry+https://github.com/rust-lang/crates.io-index"
640 checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
642 checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
641
643
642 [[package]]
644 [[package]]
643 name = "proc-macro2"
645 name = "proc-macro2"
644 version = "1.0.24"
646 version = "1.0.24"
645 source = "registry+https://github.com/rust-lang/crates.io-index"
647 source = "registry+https://github.com/rust-lang/crates.io-index"
646 checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71"
648 checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71"
647 dependencies = [
649 dependencies = [
648 "unicode-xid",
650 "unicode-xid",
649 ]
651 ]
650
652
651 [[package]]
653 [[package]]
652 name = "python27-sys"
654 name = "python27-sys"
653 version = "0.6.0"
655 version = "0.6.0"
654 source = "registry+https://github.com/rust-lang/crates.io-index"
656 source = "registry+https://github.com/rust-lang/crates.io-index"
655 checksum = "5826ddbc5366eb0b0492040fdc25bf50bb49092c192bd45e80fb7a24dc6832ab"
657 checksum = "5826ddbc5366eb0b0492040fdc25bf50bb49092c192bd45e80fb7a24dc6832ab"
656 dependencies = [
658 dependencies = [
657 "libc",
659 "libc",
658 "regex",
660 "regex",
659 ]
661 ]
660
662
661 [[package]]
663 [[package]]
662 name = "python3-sys"
664 name = "python3-sys"
663 version = "0.6.0"
665 version = "0.6.0"
664 source = "registry+https://github.com/rust-lang/crates.io-index"
666 source = "registry+https://github.com/rust-lang/crates.io-index"
665 checksum = "b78af21b29594951a47fc3dac9b9eff0a3f077dec2f780ee943ae16a668f3b6a"
667 checksum = "b78af21b29594951a47fc3dac9b9eff0a3f077dec2f780ee943ae16a668f3b6a"
666 dependencies = [
668 dependencies = [
667 "libc",
669 "libc",
668 "regex",
670 "regex",
669 ]
671 ]
670
672
671 [[package]]
673 [[package]]
672 name = "quick-error"
674 name = "quick-error"
673 version = "1.2.3"
675 version = "1.2.3"
674 source = "registry+https://github.com/rust-lang/crates.io-index"
676 source = "registry+https://github.com/rust-lang/crates.io-index"
675 checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
677 checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
676
678
677 [[package]]
679 [[package]]
678 name = "quote"
680 name = "quote"
679 version = "1.0.7"
681 version = "1.0.7"
680 source = "registry+https://github.com/rust-lang/crates.io-index"
682 source = "registry+https://github.com/rust-lang/crates.io-index"
681 checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37"
683 checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37"
682 dependencies = [
684 dependencies = [
683 "proc-macro2",
685 "proc-macro2",
684 ]
686 ]
685
687
686 [[package]]
688 [[package]]
687 name = "rand"
689 name = "rand"
688 version = "0.7.3"
690 version = "0.7.3"
689 source = "registry+https://github.com/rust-lang/crates.io-index"
691 source = "registry+https://github.com/rust-lang/crates.io-index"
690 checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
692 checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
691 dependencies = [
693 dependencies = [
692 "getrandom",
694 "getrandom",
693 "libc",
695 "libc",
694 "rand_chacha",
696 "rand_chacha",
695 "rand_core",
697 "rand_core",
696 "rand_hc",
698 "rand_hc",
697 ]
699 ]
698
700
699 [[package]]
701 [[package]]
700 name = "rand_chacha"
702 name = "rand_chacha"
701 version = "0.2.2"
703 version = "0.2.2"
702 source = "registry+https://github.com/rust-lang/crates.io-index"
704 source = "registry+https://github.com/rust-lang/crates.io-index"
703 checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
705 checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
704 dependencies = [
706 dependencies = [
705 "ppv-lite86",
707 "ppv-lite86",
706 "rand_core",
708 "rand_core",
707 ]
709 ]
708
710
709 [[package]]
711 [[package]]
710 name = "rand_core"
712 name = "rand_core"
711 version = "0.5.1"
713 version = "0.5.1"
712 source = "registry+https://github.com/rust-lang/crates.io-index"
714 source = "registry+https://github.com/rust-lang/crates.io-index"
713 checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
715 checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
714 dependencies = [
716 dependencies = [
715 "getrandom",
717 "getrandom",
716 ]
718 ]
717
719
718 [[package]]
720 [[package]]
719 name = "rand_distr"
721 name = "rand_distr"
720 version = "0.2.2"
722 version = "0.2.2"
721 source = "registry+https://github.com/rust-lang/crates.io-index"
723 source = "registry+https://github.com/rust-lang/crates.io-index"
722 checksum = "96977acbdd3a6576fb1d27391900035bf3863d4a16422973a409b488cf29ffb2"
724 checksum = "96977acbdd3a6576fb1d27391900035bf3863d4a16422973a409b488cf29ffb2"
723 dependencies = [
725 dependencies = [
724 "rand",
726 "rand",
725 ]
727 ]
726
728
727 [[package]]
729 [[package]]
728 name = "rand_hc"
730 name = "rand_hc"
729 version = "0.2.0"
731 version = "0.2.0"
730 source = "registry+https://github.com/rust-lang/crates.io-index"
732 source = "registry+https://github.com/rust-lang/crates.io-index"
731 checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
733 checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
732 dependencies = [
734 dependencies = [
733 "rand_core",
735 "rand_core",
734 ]
736 ]
735
737
736 [[package]]
738 [[package]]
737 name = "rand_pcg"
739 name = "rand_pcg"
738 version = "0.2.1"
740 version = "0.2.1"
739 source = "registry+https://github.com/rust-lang/crates.io-index"
741 source = "registry+https://github.com/rust-lang/crates.io-index"
740 checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429"
742 checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429"
741 dependencies = [
743 dependencies = [
742 "rand_core",
744 "rand_core",
743 ]
745 ]
744
746
745 [[package]]
747 [[package]]
746 name = "rand_xoshiro"
748 name = "rand_xoshiro"
747 version = "0.4.0"
749 version = "0.4.0"
748 source = "registry+https://github.com/rust-lang/crates.io-index"
750 source = "registry+https://github.com/rust-lang/crates.io-index"
749 checksum = "a9fcdd2e881d02f1d9390ae47ad8e5696a9e4be7b547a1da2afbc61973217004"
751 checksum = "a9fcdd2e881d02f1d9390ae47ad8e5696a9e4be7b547a1da2afbc61973217004"
750 dependencies = [
752 dependencies = [
751 "rand_core",
753 "rand_core",
752 ]
754 ]
753
755
754 [[package]]
756 [[package]]
755 name = "rayon"
757 name = "rayon"
756 version = "1.5.0"
758 version = "1.5.0"
757 source = "registry+https://github.com/rust-lang/crates.io-index"
759 source = "registry+https://github.com/rust-lang/crates.io-index"
758 checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674"
760 checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674"
759 dependencies = [
761 dependencies = [
760 "autocfg",
762 "autocfg",
761 "crossbeam-deque",
763 "crossbeam-deque",
762 "either",
764 "either",
763 "rayon-core",
765 "rayon-core",
764 ]
766 ]
765
767
766 [[package]]
768 [[package]]
767 name = "rayon-core"
769 name = "rayon-core"
768 version = "1.9.0"
770 version = "1.9.0"
769 source = "registry+https://github.com/rust-lang/crates.io-index"
771 source = "registry+https://github.com/rust-lang/crates.io-index"
770 checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a"
772 checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a"
771 dependencies = [
773 dependencies = [
772 "crossbeam-channel 0.5.0",
774 "crossbeam-channel 0.5.0",
773 "crossbeam-deque",
775 "crossbeam-deque",
774 "crossbeam-utils 0.8.1",
776 "crossbeam-utils 0.8.1",
775 "lazy_static",
777 "lazy_static",
776 "num_cpus",
778 "num_cpus",
777 ]
779 ]
778
780
779 [[package]]
781 [[package]]
780 name = "redox_syscall"
782 name = "redox_syscall"
781 version = "0.1.57"
783 version = "0.1.57"
782 source = "registry+https://github.com/rust-lang/crates.io-index"
784 source = "registry+https://github.com/rust-lang/crates.io-index"
783 checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce"
785 checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce"
784
786
785 [[package]]
787 [[package]]
786 name = "regex"
788 name = "regex"
787 version = "1.4.2"
789 version = "1.4.2"
788 source = "registry+https://github.com/rust-lang/crates.io-index"
790 source = "registry+https://github.com/rust-lang/crates.io-index"
789 checksum = "38cf2c13ed4745de91a5eb834e11c00bcc3709e773173b2ce4c56c9fbde04b9c"
791 checksum = "38cf2c13ed4745de91a5eb834e11c00bcc3709e773173b2ce4c56c9fbde04b9c"
790 dependencies = [
792 dependencies = [
791 "aho-corasick",
793 "aho-corasick",
792 "memchr",
794 "memchr",
793 "regex-syntax",
795 "regex-syntax",
794 "thread_local",
796 "thread_local",
795 ]
797 ]
796
798
797 [[package]]
799 [[package]]
798 name = "regex-syntax"
800 name = "regex-syntax"
799 version = "0.6.21"
801 version = "0.6.21"
800 source = "registry+https://github.com/rust-lang/crates.io-index"
802 source = "registry+https://github.com/rust-lang/crates.io-index"
801 checksum = "3b181ba2dcf07aaccad5448e8ead58db5b742cf85dfe035e2227f137a539a189"
803 checksum = "3b181ba2dcf07aaccad5448e8ead58db5b742cf85dfe035e2227f137a539a189"
802
804
803 [[package]]
805 [[package]]
804 name = "remove_dir_all"
806 name = "remove_dir_all"
805 version = "0.5.3"
807 version = "0.5.3"
806 source = "registry+https://github.com/rust-lang/crates.io-index"
808 source = "registry+https://github.com/rust-lang/crates.io-index"
807 checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
809 checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
808 dependencies = [
810 dependencies = [
809 "winapi",
811 "winapi",
810 ]
812 ]
811
813
812 [[package]]
814 [[package]]
813 name = "rhg"
815 name = "rhg"
814 version = "0.1.0"
816 version = "0.1.0"
815 dependencies = [
817 dependencies = [
816 "chrono",
818 "chrono",
817 "clap",
819 "clap",
818 "derive_more",
820 "derive_more",
819 "env_logger",
821 "env_logger",
820 "format-bytes",
822 "format-bytes",
821 "hg-core",
823 "hg-core",
822 "home",
824 "home",
823 "lazy_static",
825 "lazy_static",
824 "log",
826 "log",
825 "micro-timer",
827 "micro-timer",
826 "regex",
828 "regex",
827 "users",
829 "users",
828 ]
830 ]
829
831
830 [[package]]
832 [[package]]
831 name = "same-file"
833 name = "same-file"
832 version = "1.0.6"
834 version = "1.0.6"
833 source = "registry+https://github.com/rust-lang/crates.io-index"
835 source = "registry+https://github.com/rust-lang/crates.io-index"
834 checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
836 checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
835 dependencies = [
837 dependencies = [
836 "winapi-util",
838 "winapi-util",
837 ]
839 ]
838
840
839 [[package]]
841 [[package]]
840 name = "scopeguard"
842 name = "scopeguard"
841 version = "1.1.0"
843 version = "1.1.0"
842 source = "registry+https://github.com/rust-lang/crates.io-index"
844 source = "registry+https://github.com/rust-lang/crates.io-index"
843 checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
845 checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
844
846
845 [[package]]
847 [[package]]
846 name = "sha-1"
848 name = "sha-1"
847 version = "0.9.6"
849 version = "0.9.6"
848 source = "registry+https://github.com/rust-lang/crates.io-index"
850 source = "registry+https://github.com/rust-lang/crates.io-index"
849 checksum = "8c4cfa741c5832d0ef7fab46cabed29c2aae926db0b11bb2069edd8db5e64e16"
851 checksum = "8c4cfa741c5832d0ef7fab46cabed29c2aae926db0b11bb2069edd8db5e64e16"
850 dependencies = [
852 dependencies = [
851 "block-buffer",
853 "block-buffer",
852 "cfg-if 1.0.0",
854 "cfg-if 1.0.0",
853 "cpufeatures",
855 "cpufeatures",
854 "digest",
856 "digest",
855 "opaque-debug",
857 "opaque-debug",
856 ]
858 ]
857
859
858 [[package]]
860 [[package]]
859 name = "sized-chunks"
861 name = "sized-chunks"
860 version = "0.6.2"
862 version = "0.6.2"
861 source = "registry+https://github.com/rust-lang/crates.io-index"
863 source = "registry+https://github.com/rust-lang/crates.io-index"
862 checksum = "1ec31ceca5644fa6d444cc77548b88b67f46db6f7c71683b0f9336e671830d2f"
864 checksum = "1ec31ceca5644fa6d444cc77548b88b67f46db6f7c71683b0f9336e671830d2f"
863 dependencies = [
865 dependencies = [
864 "bitmaps",
866 "bitmaps",
865 "typenum",
867 "typenum",
866 ]
868 ]
867
869
868 [[package]]
870 [[package]]
869 name = "stable_deref_trait"
871 name = "stable_deref_trait"
870 version = "1.2.0"
872 version = "1.2.0"
871 source = "registry+https://github.com/rust-lang/crates.io-index"
873 source = "registry+https://github.com/rust-lang/crates.io-index"
872 checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
874 checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
873
875
874 [[package]]
876 [[package]]
875 name = "static_assertions"
877 name = "static_assertions"
876 version = "1.1.0"
878 version = "1.1.0"
877 source = "registry+https://github.com/rust-lang/crates.io-index"
879 source = "registry+https://github.com/rust-lang/crates.io-index"
878 checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
880 checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
879
881
880 [[package]]
882 [[package]]
881 name = "strsim"
883 name = "strsim"
882 version = "0.8.0"
884 version = "0.8.0"
883 source = "registry+https://github.com/rust-lang/crates.io-index"
885 source = "registry+https://github.com/rust-lang/crates.io-index"
884 checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
886 checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
885
887
886 [[package]]
888 [[package]]
887 name = "syn"
889 name = "syn"
888 version = "1.0.54"
890 version = "1.0.54"
889 source = "registry+https://github.com/rust-lang/crates.io-index"
891 source = "registry+https://github.com/rust-lang/crates.io-index"
890 checksum = "9a2af957a63d6bd42255c359c93d9bfdb97076bd3b820897ce55ffbfbf107f44"
892 checksum = "9a2af957a63d6bd42255c359c93d9bfdb97076bd3b820897ce55ffbfbf107f44"
891 dependencies = [
893 dependencies = [
892 "proc-macro2",
894 "proc-macro2",
893 "quote",
895 "quote",
894 "unicode-xid",
896 "unicode-xid",
895 ]
897 ]
896
898
897 [[package]]
899 [[package]]
898 name = "tempfile"
900 name = "tempfile"
899 version = "3.1.0"
901 version = "3.1.0"
900 source = "registry+https://github.com/rust-lang/crates.io-index"
902 source = "registry+https://github.com/rust-lang/crates.io-index"
901 checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9"
903 checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9"
902 dependencies = [
904 dependencies = [
903 "cfg-if 0.1.10",
905 "cfg-if 0.1.10",
904 "libc",
906 "libc",
905 "rand",
907 "rand",
906 "redox_syscall",
908 "redox_syscall",
907 "remove_dir_all",
909 "remove_dir_all",
908 "winapi",
910 "winapi",
909 ]
911 ]
910
912
911 [[package]]
913 [[package]]
912 name = "termcolor"
914 name = "termcolor"
913 version = "1.1.2"
915 version = "1.1.2"
914 source = "registry+https://github.com/rust-lang/crates.io-index"
916 source = "registry+https://github.com/rust-lang/crates.io-index"
915 checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4"
917 checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4"
916 dependencies = [
918 dependencies = [
917 "winapi-util",
919 "winapi-util",
918 ]
920 ]
919
921
920 [[package]]
922 [[package]]
921 name = "textwrap"
923 name = "textwrap"
922 version = "0.11.0"
924 version = "0.11.0"
923 source = "registry+https://github.com/rust-lang/crates.io-index"
925 source = "registry+https://github.com/rust-lang/crates.io-index"
924 checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
926 checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
925 dependencies = [
927 dependencies = [
926 "unicode-width",
928 "unicode-width",
927 ]
929 ]
928
930
929 [[package]]
931 [[package]]
930 name = "thread_local"
932 name = "thread_local"
931 version = "1.0.1"
933 version = "1.0.1"
932 source = "registry+https://github.com/rust-lang/crates.io-index"
934 source = "registry+https://github.com/rust-lang/crates.io-index"
933 checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14"
935 checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14"
934 dependencies = [
936 dependencies = [
935 "lazy_static",
937 "lazy_static",
936 ]
938 ]
937
939
938 [[package]]
940 [[package]]
939 name = "time"
941 name = "time"
940 version = "0.1.44"
942 version = "0.1.44"
941 source = "registry+https://github.com/rust-lang/crates.io-index"
943 source = "registry+https://github.com/rust-lang/crates.io-index"
942 checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255"
944 checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255"
943 dependencies = [
945 dependencies = [
944 "libc",
946 "libc",
945 "wasi 0.10.0+wasi-snapshot-preview1",
947 "wasi 0.10.0+wasi-snapshot-preview1",
946 "winapi",
948 "winapi",
947 ]
949 ]
948
950
949 [[package]]
951 [[package]]
950 name = "twox-hash"
952 name = "twox-hash"
951 version = "1.6.0"
953 version = "1.6.0"
952 source = "registry+https://github.com/rust-lang/crates.io-index"
954 source = "registry+https://github.com/rust-lang/crates.io-index"
953 checksum = "04f8ab788026715fa63b31960869617cba39117e520eb415b0139543e325ab59"
955 checksum = "04f8ab788026715fa63b31960869617cba39117e520eb415b0139543e325ab59"
954 dependencies = [
956 dependencies = [
955 "cfg-if 0.1.10",
957 "cfg-if 0.1.10",
956 "rand",
958 "rand",
957 "static_assertions",
959 "static_assertions",
958 ]
960 ]
959
961
960 [[package]]
962 [[package]]
961 name = "typenum"
963 name = "typenum"
962 version = "1.12.0"
964 version = "1.12.0"
963 source = "registry+https://github.com/rust-lang/crates.io-index"
965 source = "registry+https://github.com/rust-lang/crates.io-index"
964 checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33"
966 checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33"
965
967
966 [[package]]
968 [[package]]
967 name = "unicode-width"
969 name = "unicode-width"
968 version = "0.1.8"
970 version = "0.1.8"
969 source = "registry+https://github.com/rust-lang/crates.io-index"
971 source = "registry+https://github.com/rust-lang/crates.io-index"
970 checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3"
972 checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3"
971
973
972 [[package]]
974 [[package]]
973 name = "unicode-xid"
975 name = "unicode-xid"
974 version = "0.2.1"
976 version = "0.2.1"
975 source = "registry+https://github.com/rust-lang/crates.io-index"
977 source = "registry+https://github.com/rust-lang/crates.io-index"
976 checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564"
978 checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564"
977
979
978 [[package]]
980 [[package]]
979 name = "users"
981 name = "users"
980 version = "0.11.0"
982 version = "0.11.0"
981 source = "registry+https://github.com/rust-lang/crates.io-index"
983 source = "registry+https://github.com/rust-lang/crates.io-index"
982 checksum = "24cc0f6d6f267b73e5a2cadf007ba8f9bc39c6a6f9666f8cf25ea809a153b032"
984 checksum = "24cc0f6d6f267b73e5a2cadf007ba8f9bc39c6a6f9666f8cf25ea809a153b032"
983 dependencies = [
985 dependencies = [
984 "libc",
986 "libc",
985 "log",
987 "log",
986 ]
988 ]
987
989
988 [[package]]
990 [[package]]
989 name = "vcpkg"
991 name = "vcpkg"
990 version = "0.2.11"
992 version = "0.2.11"
991 source = "registry+https://github.com/rust-lang/crates.io-index"
993 source = "registry+https://github.com/rust-lang/crates.io-index"
992 checksum = "b00bca6106a5e23f3eee943593759b7fcddb00554332e856d990c893966879fb"
994 checksum = "b00bca6106a5e23f3eee943593759b7fcddb00554332e856d990c893966879fb"
993
995
994 [[package]]
996 [[package]]
995 name = "vec_map"
997 name = "vec_map"
996 version = "0.8.2"
998 version = "0.8.2"
997 source = "registry+https://github.com/rust-lang/crates.io-index"
999 source = "registry+https://github.com/rust-lang/crates.io-index"
998 checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
1000 checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
999
1001
1000 [[package]]
1002 [[package]]
1001 name = "version_check"
1003 name = "version_check"
1002 version = "0.9.2"
1004 version = "0.9.2"
1003 source = "registry+https://github.com/rust-lang/crates.io-index"
1005 source = "registry+https://github.com/rust-lang/crates.io-index"
1004 checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed"
1006 checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed"
1005
1007
1006 [[package]]
1008 [[package]]
1007 name = "wasi"
1009 name = "wasi"
1008 version = "0.9.0+wasi-snapshot-preview1"
1010 version = "0.9.0+wasi-snapshot-preview1"
1009 source = "registry+https://github.com/rust-lang/crates.io-index"
1011 source = "registry+https://github.com/rust-lang/crates.io-index"
1010 checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
1012 checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
1011
1013
1012 [[package]]
1014 [[package]]
1013 name = "wasi"
1015 name = "wasi"
1014 version = "0.10.0+wasi-snapshot-preview1"
1016 version = "0.10.0+wasi-snapshot-preview1"
1015 source = "registry+https://github.com/rust-lang/crates.io-index"
1017 source = "registry+https://github.com/rust-lang/crates.io-index"
1016 checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
1018 checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
1017
1019
1018 [[package]]
1020 [[package]]
1019 name = "winapi"
1021 name = "winapi"
1020 version = "0.3.9"
1022 version = "0.3.9"
1021 source = "registry+https://github.com/rust-lang/crates.io-index"
1023 source = "registry+https://github.com/rust-lang/crates.io-index"
1022 checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
1024 checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
1023 dependencies = [
1025 dependencies = [
1024 "winapi-i686-pc-windows-gnu",
1026 "winapi-i686-pc-windows-gnu",
1025 "winapi-x86_64-pc-windows-gnu",
1027 "winapi-x86_64-pc-windows-gnu",
1026 ]
1028 ]
1027
1029
1028 [[package]]
1030 [[package]]
1029 name = "winapi-i686-pc-windows-gnu"
1031 name = "winapi-i686-pc-windows-gnu"
1030 version = "0.4.0"
1032 version = "0.4.0"
1031 source = "registry+https://github.com/rust-lang/crates.io-index"
1033 source = "registry+https://github.com/rust-lang/crates.io-index"
1032 checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
1034 checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
1033
1035
1034 [[package]]
1036 [[package]]
1035 name = "winapi-util"
1037 name = "winapi-util"
1036 version = "0.1.5"
1038 version = "0.1.5"
1037 source = "registry+https://github.com/rust-lang/crates.io-index"
1039 source = "registry+https://github.com/rust-lang/crates.io-index"
1038 checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
1040 checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
1039 dependencies = [
1041 dependencies = [
1040 "winapi",
1042 "winapi",
1041 ]
1043 ]
1042
1044
1043 [[package]]
1045 [[package]]
1044 name = "winapi-x86_64-pc-windows-gnu"
1046 name = "winapi-x86_64-pc-windows-gnu"
1045 version = "0.4.0"
1047 version = "0.4.0"
1046 source = "registry+https://github.com/rust-lang/crates.io-index"
1048 source = "registry+https://github.com/rust-lang/crates.io-index"
1047 checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
1049 checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
1048
1050
1049 [[package]]
1051 [[package]]
1050 name = "zstd"
1052 name = "zstd"
1051 version = "0.5.3+zstd.1.4.5"
1053 version = "0.5.3+zstd.1.4.5"
1052 source = "registry+https://github.com/rust-lang/crates.io-index"
1054 source = "registry+https://github.com/rust-lang/crates.io-index"
1053 checksum = "01b32eaf771efa709e8308605bbf9319bf485dc1503179ec0469b611937c0cd8"
1055 checksum = "01b32eaf771efa709e8308605bbf9319bf485dc1503179ec0469b611937c0cd8"
1054 dependencies = [
1056 dependencies = [
1055 "zstd-safe",
1057 "zstd-safe",
1056 ]
1058 ]
1057
1059
1058 [[package]]
1060 [[package]]
1059 name = "zstd-safe"
1061 name = "zstd-safe"
1060 version = "2.0.5+zstd.1.4.5"
1062 version = "2.0.5+zstd.1.4.5"
1061 source = "registry+https://github.com/rust-lang/crates.io-index"
1063 source = "registry+https://github.com/rust-lang/crates.io-index"
1062 checksum = "1cfb642e0d27f64729a639c52db457e0ae906e7bc6f5fe8f5c453230400f1055"
1064 checksum = "1cfb642e0d27f64729a639c52db457e0ae906e7bc6f5fe8f5c453230400f1055"
1063 dependencies = [
1065 dependencies = [
1064 "libc",
1066 "libc",
1065 "zstd-sys",
1067 "zstd-sys",
1066 ]
1068 ]
1067
1069
1068 [[package]]
1070 [[package]]
1069 name = "zstd-sys"
1071 name = "zstd-sys"
1070 version = "1.4.17+zstd.1.4.5"
1072 version = "1.4.17+zstd.1.4.5"
1071 source = "registry+https://github.com/rust-lang/crates.io-index"
1073 source = "registry+https://github.com/rust-lang/crates.io-index"
1072 checksum = "b89249644df056b522696b1bb9e7c18c87e8ffa3e2f0dc3b0155875d6498f01b"
1074 checksum = "b89249644df056b522696b1bb9e7c18c87e8ffa3e2f0dc3b0155875d6498f01b"
1073 dependencies = [
1075 dependencies = [
1074 "cc",
1076 "cc",
1075 "glob",
1077 "glob",
1076 "itertools",
1078 "itertools",
1077 "libc",
1079 "libc",
1078 ]
1080 ]
@@ -1,45 +1,45 b''
1 [package]
1 [package]
2 name = "hg-core"
2 name = "hg-core"
3 version = "0.1.0"
3 version = "0.1.0"
4 authors = ["Georges Racinet <gracinet@anybox.fr>"]
4 authors = ["Georges Racinet <gracinet@anybox.fr>"]
5 description = "Mercurial pure Rust core library, with no assumption on Python bindings (FFI)"
5 description = "Mercurial pure Rust core library, with no assumption on Python bindings (FFI)"
6 edition = "2018"
6 edition = "2018"
7
7
8 [lib]
8 [lib]
9 name = "hg"
9 name = "hg"
10
10
11 [dependencies]
11 [dependencies]
12 bytes-cast = "0.2"
12 bytes-cast = "0.2"
13 byteorder = "1.3.4"
13 byteorder = "1.3.4"
14 derive_more = "0.99"
14 derive_more = "0.99"
15 home = "0.5"
15 home = "0.5"
16 im-rc = "15.0.*"
16 im-rc = "15.0.*"
17 itertools = "0.9"
17 itertools = "0.9"
18 lazy_static = "1.4.0"
18 lazy_static = "1.4.0"
19 rand = "0.7.3"
19 rand = "0.7.3"
20 rand_pcg = "0.2.1"
20 rand_pcg = "0.2.1"
21 rand_distr = "0.2.2"
21 rand_distr = "0.2.2"
22 rayon = "1.3.0"
22 rayon = "1.3.0"
23 regex = "1.3.9"
23 regex = "1.3.9"
24 sha-1 = "0.9.6"
24 sha-1 = "0.9.6"
25 twox-hash = "1.5.0"
25 twox-hash = "1.5.0"
26 same-file = "1.0.6"
26 same-file = "1.0.6"
27 stable_deref_trait = "1.2.0"
27 stable_deref_trait = "1.2.0"
28 tempfile = "3.1.0"
28 tempfile = "3.1.0"
29 crossbeam-channel = "0.4"
29 crossbeam-channel = "0.4"
30 micro-timer = "0.3.0"
30 micro-timer = "0.3.0"
31 log = "0.4.8"
31 log = "0.4.8"
32 memmap2 = "0.3.1"
32 memmap2 = {version = "0.4", features = ["stable_deref_trait"]}
33 zstd = "0.5.3"
33 zstd = "0.5.3"
34 format-bytes = "0.2.2"
34 format-bytes = "0.2.2"
35
35
36 # We don't use the `miniz-oxide` backend to not change rhg benchmarks and until
36 # We don't use the `miniz-oxide` backend to not change rhg benchmarks and until
37 # we have a clearer view of which backend is the fastest.
37 # we have a clearer view of which backend is the fastest.
38 [dependencies.flate2]
38 [dependencies.flate2]
39 version = "1.0.16"
39 version = "1.0.16"
40 features = ["zlib"]
40 features = ["zlib"]
41 default-features = false
41 default-features = false
42
42
43 [dev-dependencies]
43 [dev-dependencies]
44 clap = "*"
44 clap = "*"
45 pretty_assertions = "0.6.1"
45 pretty_assertions = "0.6.1"
@@ -1,422 +1,409 b''
1 use crate::changelog::Changelog;
1 use crate::changelog::Changelog;
2 use crate::config::{Config, ConfigError, ConfigParseError};
2 use crate::config::{Config, ConfigError, ConfigParseError};
3 use crate::dirstate::DirstateParents;
3 use crate::dirstate::DirstateParents;
4 use crate::dirstate_tree::dirstate_map::DirstateMap;
4 use crate::dirstate_tree::dirstate_map::DirstateMap;
5 use crate::dirstate_tree::owning::OwningDirstateMap;
5 use crate::dirstate_tree::owning::OwningDirstateMap;
6 use crate::errors::HgError;
6 use crate::errors::HgError;
7 use crate::errors::HgResultExt;
7 use crate::errors::HgResultExt;
8 use crate::exit_codes;
8 use crate::exit_codes;
9 use crate::manifest::{Manifest, Manifestlog};
9 use crate::manifest::{Manifest, Manifestlog};
10 use crate::revlog::filelog::Filelog;
10 use crate::revlog::filelog::Filelog;
11 use crate::revlog::revlog::RevlogError;
11 use crate::revlog::revlog::RevlogError;
12 use crate::utils::files::get_path_from_bytes;
12 use crate::utils::files::get_path_from_bytes;
13 use crate::utils::hg_path::HgPath;
13 use crate::utils::hg_path::HgPath;
14 use crate::utils::SliceExt;
14 use crate::utils::SliceExt;
15 use crate::vfs::{is_dir, is_file, Vfs};
15 use crate::vfs::{is_dir, is_file, Vfs};
16 use crate::{requirements, NodePrefix};
16 use crate::{requirements, NodePrefix};
17 use crate::{DirstateError, Revision};
17 use crate::{DirstateError, Revision};
18 use std::cell::{Cell, Ref, RefCell, RefMut};
18 use std::cell::{Cell, Ref, RefCell, RefMut};
19 use std::collections::HashSet;
19 use std::collections::HashSet;
20 use std::path::{Path, PathBuf};
20 use std::path::{Path, PathBuf};
21
21
22 /// A repository on disk
22 /// A repository on disk
23 pub struct Repo {
23 pub struct Repo {
24 working_directory: PathBuf,
24 working_directory: PathBuf,
25 dot_hg: PathBuf,
25 dot_hg: PathBuf,
26 store: PathBuf,
26 store: PathBuf,
27 requirements: HashSet<String>,
27 requirements: HashSet<String>,
28 config: Config,
28 config: Config,
29 // None means not known/initialized yet
29 // None means not known/initialized yet
30 dirstate_parents: Cell<Option<DirstateParents>>,
30 dirstate_parents: Cell<Option<DirstateParents>>,
31 dirstate_map: LazyCell<OwningDirstateMap, DirstateError>,
31 dirstate_map: LazyCell<OwningDirstateMap, DirstateError>,
32 changelog: LazyCell<Changelog, HgError>,
32 changelog: LazyCell<Changelog, HgError>,
33 manifestlog: LazyCell<Manifestlog, HgError>,
33 manifestlog: LazyCell<Manifestlog, HgError>,
34 }
34 }
35
35
36 #[derive(Debug, derive_more::From)]
36 #[derive(Debug, derive_more::From)]
37 pub enum RepoError {
37 pub enum RepoError {
38 NotFound {
38 NotFound {
39 at: PathBuf,
39 at: PathBuf,
40 },
40 },
41 #[from]
41 #[from]
42 ConfigParseError(ConfigParseError),
42 ConfigParseError(ConfigParseError),
43 #[from]
43 #[from]
44 Other(HgError),
44 Other(HgError),
45 }
45 }
46
46
47 impl From<ConfigError> for RepoError {
47 impl From<ConfigError> for RepoError {
48 fn from(error: ConfigError) -> Self {
48 fn from(error: ConfigError) -> Self {
49 match error {
49 match error {
50 ConfigError::Parse(error) => error.into(),
50 ConfigError::Parse(error) => error.into(),
51 ConfigError::Other(error) => error.into(),
51 ConfigError::Other(error) => error.into(),
52 }
52 }
53 }
53 }
54 }
54 }
55
55
56 impl Repo {
56 impl Repo {
57 /// tries to find nearest repository root in current working directory or
57 /// tries to find nearest repository root in current working directory or
58 /// its ancestors
58 /// its ancestors
59 pub fn find_repo_root() -> Result<PathBuf, RepoError> {
59 pub fn find_repo_root() -> Result<PathBuf, RepoError> {
60 let current_directory = crate::utils::current_dir()?;
60 let current_directory = crate::utils::current_dir()?;
61 // ancestors() is inclusive: it first yields `current_directory`
61 // ancestors() is inclusive: it first yields `current_directory`
62 // as-is.
62 // as-is.
63 for ancestor in current_directory.ancestors() {
63 for ancestor in current_directory.ancestors() {
64 if is_dir(ancestor.join(".hg"))? {
64 if is_dir(ancestor.join(".hg"))? {
65 return Ok(ancestor.to_path_buf());
65 return Ok(ancestor.to_path_buf());
66 }
66 }
67 }
67 }
68 return Err(RepoError::NotFound {
68 return Err(RepoError::NotFound {
69 at: current_directory,
69 at: current_directory,
70 });
70 });
71 }
71 }
72
72
73 /// Find a repository, either at the given path (which must contain a `.hg`
73 /// Find a repository, either at the given path (which must contain a `.hg`
74 /// sub-directory) or by searching the current directory and its
74 /// sub-directory) or by searching the current directory and its
75 /// ancestors.
75 /// ancestors.
76 ///
76 ///
77 /// A method with two very different "modes" like this usually a code smell
77 /// A method with two very different "modes" like this usually a code smell
78 /// to make two methods instead, but in this case an `Option` is what rhg
78 /// to make two methods instead, but in this case an `Option` is what rhg
79 /// sub-commands get from Clap for the `-R` / `--repository` CLI argument.
79 /// sub-commands get from Clap for the `-R` / `--repository` CLI argument.
80 /// Having two methods would just move that `if` to almost all callers.
80 /// Having two methods would just move that `if` to almost all callers.
81 pub fn find(
81 pub fn find(
82 config: &Config,
82 config: &Config,
83 explicit_path: Option<PathBuf>,
83 explicit_path: Option<PathBuf>,
84 ) -> Result<Self, RepoError> {
84 ) -> Result<Self, RepoError> {
85 if let Some(root) = explicit_path {
85 if let Some(root) = explicit_path {
86 if is_dir(root.join(".hg"))? {
86 if is_dir(root.join(".hg"))? {
87 Self::new_at_path(root.to_owned(), config)
87 Self::new_at_path(root.to_owned(), config)
88 } else if is_file(&root)? {
88 } else if is_file(&root)? {
89 Err(HgError::unsupported("bundle repository").into())
89 Err(HgError::unsupported("bundle repository").into())
90 } else {
90 } else {
91 Err(RepoError::NotFound {
91 Err(RepoError::NotFound {
92 at: root.to_owned(),
92 at: root.to_owned(),
93 })
93 })
94 }
94 }
95 } else {
95 } else {
96 let root = Self::find_repo_root()?;
96 let root = Self::find_repo_root()?;
97 Self::new_at_path(root, config)
97 Self::new_at_path(root, config)
98 }
98 }
99 }
99 }
100
100
101 /// To be called after checking that `.hg` is a sub-directory
101 /// To be called after checking that `.hg` is a sub-directory
102 fn new_at_path(
102 fn new_at_path(
103 working_directory: PathBuf,
103 working_directory: PathBuf,
104 config: &Config,
104 config: &Config,
105 ) -> Result<Self, RepoError> {
105 ) -> Result<Self, RepoError> {
106 let dot_hg = working_directory.join(".hg");
106 let dot_hg = working_directory.join(".hg");
107
107
108 let mut repo_config_files = Vec::new();
108 let mut repo_config_files = Vec::new();
109 repo_config_files.push(dot_hg.join("hgrc"));
109 repo_config_files.push(dot_hg.join("hgrc"));
110 repo_config_files.push(dot_hg.join("hgrc-not-shared"));
110 repo_config_files.push(dot_hg.join("hgrc-not-shared"));
111
111
112 let hg_vfs = Vfs { base: &dot_hg };
112 let hg_vfs = Vfs { base: &dot_hg };
113 let mut reqs = requirements::load_if_exists(hg_vfs)?;
113 let mut reqs = requirements::load_if_exists(hg_vfs)?;
114 let relative =
114 let relative =
115 reqs.contains(requirements::RELATIVE_SHARED_REQUIREMENT);
115 reqs.contains(requirements::RELATIVE_SHARED_REQUIREMENT);
116 let shared =
116 let shared =
117 reqs.contains(requirements::SHARED_REQUIREMENT) || relative;
117 reqs.contains(requirements::SHARED_REQUIREMENT) || relative;
118
118
119 // From `mercurial/localrepo.py`:
119 // From `mercurial/localrepo.py`:
120 //
120 //
121 // if .hg/requires contains the sharesafe requirement, it means
121 // if .hg/requires contains the sharesafe requirement, it means
122 // there exists a `.hg/store/requires` too and we should read it
122 // there exists a `.hg/store/requires` too and we should read it
123 // NOTE: presence of SHARESAFE_REQUIREMENT imply that store requirement
123 // NOTE: presence of SHARESAFE_REQUIREMENT imply that store requirement
124 // is present. We never write SHARESAFE_REQUIREMENT for a repo if store
124 // is present. We never write SHARESAFE_REQUIREMENT for a repo if store
125 // is not present, refer checkrequirementscompat() for that
125 // is not present, refer checkrequirementscompat() for that
126 //
126 //
127 // However, if SHARESAFE_REQUIREMENT is not present, it means that the
127 // However, if SHARESAFE_REQUIREMENT is not present, it means that the
128 // repository was shared the old way. We check the share source
128 // repository was shared the old way. We check the share source
129 // .hg/requires for SHARESAFE_REQUIREMENT to detect whether the
129 // .hg/requires for SHARESAFE_REQUIREMENT to detect whether the
130 // current repository needs to be reshared
130 // current repository needs to be reshared
131 let share_safe = reqs.contains(requirements::SHARESAFE_REQUIREMENT);
131 let share_safe = reqs.contains(requirements::SHARESAFE_REQUIREMENT);
132
132
133 let store_path;
133 let store_path;
134 if !shared {
134 if !shared {
135 store_path = dot_hg.join("store");
135 store_path = dot_hg.join("store");
136 } else {
136 } else {
137 let bytes = hg_vfs.read("sharedpath")?;
137 let bytes = hg_vfs.read("sharedpath")?;
138 let mut shared_path =
138 let mut shared_path =
139 get_path_from_bytes(bytes.trim_end_matches(|b| b == b'\n'))
139 get_path_from_bytes(bytes.trim_end_matches(|b| b == b'\n'))
140 .to_owned();
140 .to_owned();
141 if relative {
141 if relative {
142 shared_path = dot_hg.join(shared_path)
142 shared_path = dot_hg.join(shared_path)
143 }
143 }
144 if !is_dir(&shared_path)? {
144 if !is_dir(&shared_path)? {
145 return Err(HgError::corrupted(format!(
145 return Err(HgError::corrupted(format!(
146 ".hg/sharedpath points to nonexistent directory {}",
146 ".hg/sharedpath points to nonexistent directory {}",
147 shared_path.display()
147 shared_path.display()
148 ))
148 ))
149 .into());
149 .into());
150 }
150 }
151
151
152 store_path = shared_path.join("store");
152 store_path = shared_path.join("store");
153
153
154 let source_is_share_safe =
154 let source_is_share_safe =
155 requirements::load(Vfs { base: &shared_path })?
155 requirements::load(Vfs { base: &shared_path })?
156 .contains(requirements::SHARESAFE_REQUIREMENT);
156 .contains(requirements::SHARESAFE_REQUIREMENT);
157
157
158 if share_safe && !source_is_share_safe {
158 if share_safe && !source_is_share_safe {
159 return Err(match config
159 return Err(match config
160 .get(b"share", b"safe-mismatch.source-not-safe")
160 .get(b"share", b"safe-mismatch.source-not-safe")
161 {
161 {
162 Some(b"abort") | None => HgError::abort(
162 Some(b"abort") | None => HgError::abort(
163 "abort: share source does not support share-safe requirement\n\
163 "abort: share source does not support share-safe requirement\n\
164 (see `hg help config.format.use-share-safe` for more information)",
164 (see `hg help config.format.use-share-safe` for more information)",
165 exit_codes::ABORT,
165 exit_codes::ABORT,
166 ),
166 ),
167 _ => HgError::unsupported("share-safe downgrade"),
167 _ => HgError::unsupported("share-safe downgrade"),
168 }
168 }
169 .into());
169 .into());
170 } else if source_is_share_safe && !share_safe {
170 } else if source_is_share_safe && !share_safe {
171 return Err(
171 return Err(
172 match config.get(b"share", b"safe-mismatch.source-safe") {
172 match config.get(b"share", b"safe-mismatch.source-safe") {
173 Some(b"abort") | None => HgError::abort(
173 Some(b"abort") | None => HgError::abort(
174 "abort: version mismatch: source uses share-safe \
174 "abort: version mismatch: source uses share-safe \
175 functionality while the current share does not\n\
175 functionality while the current share does not\n\
176 (see `hg help config.format.use-share-safe` for more information)",
176 (see `hg help config.format.use-share-safe` for more information)",
177 exit_codes::ABORT,
177 exit_codes::ABORT,
178 ),
178 ),
179 _ => HgError::unsupported("share-safe upgrade"),
179 _ => HgError::unsupported("share-safe upgrade"),
180 }
180 }
181 .into(),
181 .into(),
182 );
182 );
183 }
183 }
184
184
185 if share_safe {
185 if share_safe {
186 repo_config_files.insert(0, shared_path.join("hgrc"))
186 repo_config_files.insert(0, shared_path.join("hgrc"))
187 }
187 }
188 }
188 }
189 if share_safe {
189 if share_safe {
190 reqs.extend(requirements::load(Vfs { base: &store_path })?);
190 reqs.extend(requirements::load(Vfs { base: &store_path })?);
191 }
191 }
192
192
193 let repo_config = if std::env::var_os("HGRCSKIPREPO").is_none() {
193 let repo_config = if std::env::var_os("HGRCSKIPREPO").is_none() {
194 config.combine_with_repo(&repo_config_files)?
194 config.combine_with_repo(&repo_config_files)?
195 } else {
195 } else {
196 config.clone()
196 config.clone()
197 };
197 };
198
198
199 let repo = Self {
199 let repo = Self {
200 requirements: reqs,
200 requirements: reqs,
201 working_directory,
201 working_directory,
202 store: store_path,
202 store: store_path,
203 dot_hg,
203 dot_hg,
204 config: repo_config,
204 config: repo_config,
205 dirstate_parents: Cell::new(None),
205 dirstate_parents: Cell::new(None),
206 dirstate_map: LazyCell::new(Self::new_dirstate_map),
206 dirstate_map: LazyCell::new(Self::new_dirstate_map),
207 changelog: LazyCell::new(Changelog::open),
207 changelog: LazyCell::new(Changelog::open),
208 manifestlog: LazyCell::new(Manifestlog::open),
208 manifestlog: LazyCell::new(Manifestlog::open),
209 };
209 };
210
210
211 requirements::check(&repo)?;
211 requirements::check(&repo)?;
212
212
213 Ok(repo)
213 Ok(repo)
214 }
214 }
215
215
216 pub fn working_directory_path(&self) -> &Path {
216 pub fn working_directory_path(&self) -> &Path {
217 &self.working_directory
217 &self.working_directory
218 }
218 }
219
219
220 pub fn requirements(&self) -> &HashSet<String> {
220 pub fn requirements(&self) -> &HashSet<String> {
221 &self.requirements
221 &self.requirements
222 }
222 }
223
223
224 pub fn config(&self) -> &Config {
224 pub fn config(&self) -> &Config {
225 &self.config
225 &self.config
226 }
226 }
227
227
228 /// For accessing repository files (in `.hg`), except for the store
228 /// For accessing repository files (in `.hg`), except for the store
229 /// (`.hg/store`).
229 /// (`.hg/store`).
230 pub fn hg_vfs(&self) -> Vfs<'_> {
230 pub fn hg_vfs(&self) -> Vfs<'_> {
231 Vfs { base: &self.dot_hg }
231 Vfs { base: &self.dot_hg }
232 }
232 }
233
233
234 /// For accessing repository store files (in `.hg/store`)
234 /// For accessing repository store files (in `.hg/store`)
235 pub fn store_vfs(&self) -> Vfs<'_> {
235 pub fn store_vfs(&self) -> Vfs<'_> {
236 Vfs { base: &self.store }
236 Vfs { base: &self.store }
237 }
237 }
238
238
239 /// For accessing the working copy
239 /// For accessing the working copy
240 pub fn working_directory_vfs(&self) -> Vfs<'_> {
240 pub fn working_directory_vfs(&self) -> Vfs<'_> {
241 Vfs {
241 Vfs {
242 base: &self.working_directory,
242 base: &self.working_directory,
243 }
243 }
244 }
244 }
245
245
246 pub fn has_dirstate_v2(&self) -> bool {
246 pub fn has_dirstate_v2(&self) -> bool {
247 self.requirements
247 self.requirements
248 .contains(requirements::DIRSTATE_V2_REQUIREMENT)
248 .contains(requirements::DIRSTATE_V2_REQUIREMENT)
249 }
249 }
250
250
251 fn dirstate_file_contents(&self) -> Result<Vec<u8>, HgError> {
251 fn dirstate_file_contents(&self) -> Result<Vec<u8>, HgError> {
252 Ok(self
252 Ok(self
253 .hg_vfs()
253 .hg_vfs()
254 .read("dirstate")
254 .read("dirstate")
255 .io_not_found_as_none()?
255 .io_not_found_as_none()?
256 .unwrap_or(Vec::new()))
256 .unwrap_or(Vec::new()))
257 }
257 }
258
258
259 pub fn dirstate_parents(&self) -> Result<DirstateParents, HgError> {
259 pub fn dirstate_parents(&self) -> Result<DirstateParents, HgError> {
260 if let Some(parents) = self.dirstate_parents.get() {
260 if let Some(parents) = self.dirstate_parents.get() {
261 return Ok(parents);
261 return Ok(parents);
262 }
262 }
263 let dirstate = self.dirstate_file_contents()?;
263 let dirstate = self.dirstate_file_contents()?;
264 let parents = if dirstate.is_empty() {
264 let parents = if dirstate.is_empty() {
265 DirstateParents::NULL
265 DirstateParents::NULL
266 } else if self.has_dirstate_v2() {
266 } else if self.has_dirstate_v2() {
267 crate::dirstate_tree::on_disk::read_docket(&dirstate)?.parents()
267 crate::dirstate_tree::on_disk::read_docket(&dirstate)?.parents()
268 } else {
268 } else {
269 crate::dirstate::parsers::parse_dirstate_parents(&dirstate)?
269 crate::dirstate::parsers::parse_dirstate_parents(&dirstate)?
270 .clone()
270 .clone()
271 };
271 };
272 self.dirstate_parents.set(Some(parents));
272 self.dirstate_parents.set(Some(parents));
273 Ok(parents)
273 Ok(parents)
274 }
274 }
275
275
276 fn new_dirstate_map(&self) -> Result<OwningDirstateMap, DirstateError> {
276 fn new_dirstate_map(&self) -> Result<OwningDirstateMap, DirstateError> {
277 let dirstate_file_contents = self.dirstate_file_contents()?;
277 let dirstate_file_contents = self.dirstate_file_contents()?;
278 if dirstate_file_contents.is_empty() {
278 if dirstate_file_contents.is_empty() {
279 self.dirstate_parents.set(Some(DirstateParents::NULL));
279 self.dirstate_parents.set(Some(DirstateParents::NULL));
280 Ok(OwningDirstateMap::new_empty(Vec::new()))
280 Ok(OwningDirstateMap::new_empty(Vec::new()))
281 } else if self.has_dirstate_v2() {
281 } else if self.has_dirstate_v2() {
282 let docket = crate::dirstate_tree::on_disk::read_docket(
282 let docket = crate::dirstate_tree::on_disk::read_docket(
283 &dirstate_file_contents,
283 &dirstate_file_contents,
284 )?;
284 )?;
285 self.dirstate_parents.set(Some(docket.parents()));
285 self.dirstate_parents.set(Some(docket.parents()));
286 let data_size = docket.data_size();
286 let data_size = docket.data_size();
287 let metadata = docket.tree_metadata();
287 let metadata = docket.tree_metadata();
288 let mut map = if let Some(data_mmap) = self
288 let mut map = if let Some(data_mmap) = self
289 .hg_vfs()
289 .hg_vfs()
290 .mmap_open(docket.data_filename())
290 .mmap_open(docket.data_filename())
291 .io_not_found_as_none()?
291 .io_not_found_as_none()?
292 {
292 {
293 OwningDirstateMap::new_empty(MmapWrapper(data_mmap))
293 OwningDirstateMap::new_empty(data_mmap)
294 } else {
294 } else {
295 OwningDirstateMap::new_empty(Vec::new())
295 OwningDirstateMap::new_empty(Vec::new())
296 };
296 };
297 let (on_disk, placeholder) = map.get_mut_pair();
297 let (on_disk, placeholder) = map.get_mut_pair();
298 *placeholder = DirstateMap::new_v2(on_disk, data_size, metadata)?;
298 *placeholder = DirstateMap::new_v2(on_disk, data_size, metadata)?;
299 Ok(map)
299 Ok(map)
300 } else {
300 } else {
301 let mut map = OwningDirstateMap::new_empty(dirstate_file_contents);
301 let mut map = OwningDirstateMap::new_empty(dirstate_file_contents);
302 let (on_disk, placeholder) = map.get_mut_pair();
302 let (on_disk, placeholder) = map.get_mut_pair();
303 let (inner, parents) = DirstateMap::new_v1(on_disk)?;
303 let (inner, parents) = DirstateMap::new_v1(on_disk)?;
304 self.dirstate_parents
304 self.dirstate_parents
305 .set(Some(parents.unwrap_or(DirstateParents::NULL)));
305 .set(Some(parents.unwrap_or(DirstateParents::NULL)));
306 *placeholder = inner;
306 *placeholder = inner;
307 Ok(map)
307 Ok(map)
308 }
308 }
309 }
309 }
310
310
311 pub fn dirstate_map(
311 pub fn dirstate_map(
312 &self,
312 &self,
313 ) -> Result<Ref<OwningDirstateMap>, DirstateError> {
313 ) -> Result<Ref<OwningDirstateMap>, DirstateError> {
314 self.dirstate_map.get_or_init(self)
314 self.dirstate_map.get_or_init(self)
315 }
315 }
316
316
317 pub fn dirstate_map_mut(
317 pub fn dirstate_map_mut(
318 &self,
318 &self,
319 ) -> Result<RefMut<OwningDirstateMap>, DirstateError> {
319 ) -> Result<RefMut<OwningDirstateMap>, DirstateError> {
320 self.dirstate_map.get_mut_or_init(self)
320 self.dirstate_map.get_mut_or_init(self)
321 }
321 }
322
322
323 pub fn changelog(&self) -> Result<Ref<Changelog>, HgError> {
323 pub fn changelog(&self) -> Result<Ref<Changelog>, HgError> {
324 self.changelog.get_or_init(self)
324 self.changelog.get_or_init(self)
325 }
325 }
326
326
327 pub fn changelog_mut(&self) -> Result<RefMut<Changelog>, HgError> {
327 pub fn changelog_mut(&self) -> Result<RefMut<Changelog>, HgError> {
328 self.changelog.get_mut_or_init(self)
328 self.changelog.get_mut_or_init(self)
329 }
329 }
330
330
331 pub fn manifestlog(&self) -> Result<Ref<Manifestlog>, HgError> {
331 pub fn manifestlog(&self) -> Result<Ref<Manifestlog>, HgError> {
332 self.manifestlog.get_or_init(self)
332 self.manifestlog.get_or_init(self)
333 }
333 }
334
334
335 pub fn manifestlog_mut(&self) -> Result<RefMut<Manifestlog>, HgError> {
335 pub fn manifestlog_mut(&self) -> Result<RefMut<Manifestlog>, HgError> {
336 self.manifestlog.get_mut_or_init(self)
336 self.manifestlog.get_mut_or_init(self)
337 }
337 }
338
338
339 /// Returns the manifest of the *changeset* with the given node ID
339 /// Returns the manifest of the *changeset* with the given node ID
340 pub fn manifest_for_node(
340 pub fn manifest_for_node(
341 &self,
341 &self,
342 node: impl Into<NodePrefix>,
342 node: impl Into<NodePrefix>,
343 ) -> Result<Manifest, RevlogError> {
343 ) -> Result<Manifest, RevlogError> {
344 self.manifestlog()?.data_for_node(
344 self.manifestlog()?.data_for_node(
345 self.changelog()?
345 self.changelog()?
346 .data_for_node(node.into())?
346 .data_for_node(node.into())?
347 .manifest_node()?
347 .manifest_node()?
348 .into(),
348 .into(),
349 )
349 )
350 }
350 }
351
351
352 /// Returns the manifest of the *changeset* with the given revision number
352 /// Returns the manifest of the *changeset* with the given revision number
353 pub fn manifest_for_rev(
353 pub fn manifest_for_rev(
354 &self,
354 &self,
355 revision: Revision,
355 revision: Revision,
356 ) -> Result<Manifest, RevlogError> {
356 ) -> Result<Manifest, RevlogError> {
357 self.manifestlog()?.data_for_node(
357 self.manifestlog()?.data_for_node(
358 self.changelog()?
358 self.changelog()?
359 .data_for_rev(revision)?
359 .data_for_rev(revision)?
360 .manifest_node()?
360 .manifest_node()?
361 .into(),
361 .into(),
362 )
362 )
363 }
363 }
364
364
365 pub fn filelog(&self, path: &HgPath) -> Result<Filelog, HgError> {
365 pub fn filelog(&self, path: &HgPath) -> Result<Filelog, HgError> {
366 Filelog::open(self, path)
366 Filelog::open(self, path)
367 }
367 }
368 }
368 }
369
369
370 /// Lazily-initialized component of `Repo` with interior mutability
370 /// Lazily-initialized component of `Repo` with interior mutability
371 ///
371 ///
372 /// This differs from `OnceCell` in that the value can still be "deinitialized"
372 /// This differs from `OnceCell` in that the value can still be "deinitialized"
373 /// later by setting its inner `Option` to `None`.
373 /// later by setting its inner `Option` to `None`.
374 struct LazyCell<T, E> {
374 struct LazyCell<T, E> {
375 value: RefCell<Option<T>>,
375 value: RefCell<Option<T>>,
376 // `Fn`s that don’t capture environment are zero-size, so this box does
376 // `Fn`s that don’t capture environment are zero-size, so this box does
377 // not allocate:
377 // not allocate:
378 init: Box<dyn Fn(&Repo) -> Result<T, E>>,
378 init: Box<dyn Fn(&Repo) -> Result<T, E>>,
379 }
379 }
380
380
381 impl<T, E> LazyCell<T, E> {
381 impl<T, E> LazyCell<T, E> {
382 fn new(init: impl Fn(&Repo) -> Result<T, E> + 'static) -> Self {
382 fn new(init: impl Fn(&Repo) -> Result<T, E> + 'static) -> Self {
383 Self {
383 Self {
384 value: RefCell::new(None),
384 value: RefCell::new(None),
385 init: Box::new(init),
385 init: Box::new(init),
386 }
386 }
387 }
387 }
388
388
389 fn get_or_init(&self, repo: &Repo) -> Result<Ref<T>, E> {
389 fn get_or_init(&self, repo: &Repo) -> Result<Ref<T>, E> {
390 let mut borrowed = self.value.borrow();
390 let mut borrowed = self.value.borrow();
391 if borrowed.is_none() {
391 if borrowed.is_none() {
392 drop(borrowed);
392 drop(borrowed);
393 // Only use `borrow_mut` if it is really needed to avoid panic in
393 // Only use `borrow_mut` if it is really needed to avoid panic in
394 // case there is another outstanding borrow but mutation is not
394 // case there is another outstanding borrow but mutation is not
395 // needed.
395 // needed.
396 *self.value.borrow_mut() = Some((self.init)(repo)?);
396 *self.value.borrow_mut() = Some((self.init)(repo)?);
397 borrowed = self.value.borrow()
397 borrowed = self.value.borrow()
398 }
398 }
399 Ok(Ref::map(borrowed, |option| option.as_ref().unwrap()))
399 Ok(Ref::map(borrowed, |option| option.as_ref().unwrap()))
400 }
400 }
401
401
402 pub fn get_mut_or_init(&self, repo: &Repo) -> Result<RefMut<T>, E> {
402 pub fn get_mut_or_init(&self, repo: &Repo) -> Result<RefMut<T>, E> {
403 let mut borrowed = self.value.borrow_mut();
403 let mut borrowed = self.value.borrow_mut();
404 if borrowed.is_none() {
404 if borrowed.is_none() {
405 *borrowed = Some((self.init)(repo)?);
405 *borrowed = Some((self.init)(repo)?);
406 }
406 }
407 Ok(RefMut::map(borrowed, |option| option.as_mut().unwrap()))
407 Ok(RefMut::map(borrowed, |option| option.as_mut().unwrap()))
408 }
408 }
409 }
409 }
410
411 // TODO: remove this when https://github.com/RazrFalcon/memmap2-rs/pull/22 is on crates.io
412 struct MmapWrapper(memmap2::Mmap);
413
414 impl std::ops::Deref for MmapWrapper {
415 type Target = [u8];
416
417 fn deref(&self) -> &[u8] {
418 self.0.deref()
419 }
420 }
421
422 unsafe impl stable_deref_trait::StableDeref for MmapWrapper {}
General Comments 0
You need to be logged in to leave comments. Login now