Show More
@@ -267,7 +267,9 b' class fncache(object):' | |||
|
267 | 267 | def add(self, fn): |
|
268 | 268 | if self.entries is None: |
|
269 | 269 | self._load() |
|
270 | if fn not in self.entries: | |
|
270 | 271 | self.opener('fncache', 'ab').write(encodedir(fn) + '\n') |
|
272 | self.entries.add(fn) | |
|
271 | 273 | |
|
272 | 274 | def __contains__(self, fn): |
|
273 | 275 | if self.entries is None: |
@@ -290,9 +292,7 b' class fncachestore(basicstore):' | |||
|
290 | 292 | self.fncache = fnc |
|
291 | 293 | |
|
292 | 294 | def fncacheopener(path, mode='r', *args, **kw): |
|
293 |
if |
|
|
294 | and path.startswith('data/') | |
|
295 | and path not in fnc): | |
|
295 | if mode not in ('r', 'rb') and path.startswith('data/'): | |
|
296 | 296 | fnc.add(path) |
|
297 | 297 | return op(hybridencode(path), mode, *args, **kw) |
|
298 | 298 | self.opener = fncacheopener |
@@ -56,4 +56,10 b' hg convert --source-type foo a a-foo' | |||
|
56 | 56 | echo % convert with imaginary sink type |
|
57 | 57 | hg convert --dest-type foo a a-foo |
|
58 | 58 | |
|
59 | echo | |
|
60 | echo % "testing: convert must not produce duplicate entries in fncache" | |
|
61 | hg convert a b | |
|
62 | echo % "contents of fncache file:" | |
|
63 | cat b/.hg/store/fncache | |
|
64 | ||
|
59 | 65 | true |
@@ -273,3 +273,17 b' initializing destination a-foo repositor' | |||
|
273 | 273 | abort: foo: invalid source repository type |
|
274 | 274 | % convert with imaginary sink type |
|
275 | 275 | abort: foo: invalid destination repository type |
|
276 | ||
|
277 | % testing: convert must not produce duplicate entries in fncache | |
|
278 | initializing destination b repository | |
|
279 | scanning source... | |
|
280 | sorting... | |
|
281 | converting... | |
|
282 | 4 a | |
|
283 | 3 b | |
|
284 | 2 c | |
|
285 | 1 d | |
|
286 | 0 e | |
|
287 | % contents of fncache file: | |
|
288 | data/a.i | |
|
289 | data/b.i |
General Comments 0
You need to be logged in to leave comments.
Login now