Show More
@@ -267,7 +267,9 b' class fncache(object):' | |||||
267 | def add(self, fn): |
|
267 | def add(self, fn): | |
268 | if self.entries is None: |
|
268 | if self.entries is None: | |
269 | self._load() |
|
269 | self._load() | |
270 | self.opener('fncache', 'ab').write(encodedir(fn) + '\n') |
|
270 | if fn not in self.entries: | |
|
271 | self.opener('fncache', 'ab').write(encodedir(fn) + '\n') | |||
|
272 | self.entries.add(fn) | |||
271 |
|
273 | |||
272 | def __contains__(self, fn): |
|
274 | def __contains__(self, fn): | |
273 | if self.entries is None: |
|
275 | if self.entries is None: | |
@@ -290,9 +292,7 b' class fncachestore(basicstore):' | |||||
290 | self.fncache = fnc |
|
292 | self.fncache = fnc | |
291 |
|
293 | |||
292 | def fncacheopener(path, mode='r', *args, **kw): |
|
294 | def fncacheopener(path, mode='r', *args, **kw): | |
293 |
if |
|
295 | if mode not in ('r', 'rb') and path.startswith('data/'): | |
294 | and path.startswith('data/') |
|
|||
295 | and path not in fnc): |
|
|||
296 | fnc.add(path) |
|
296 | fnc.add(path) | |
297 | return op(hybridencode(path), mode, *args, **kw) |
|
297 | return op(hybridencode(path), mode, *args, **kw) | |
298 | self.opener = fncacheopener |
|
298 | self.opener = fncacheopener |
@@ -56,4 +56,10 b' hg convert --source-type foo a a-foo' | |||||
56 | echo % convert with imaginary sink type |
|
56 | echo % convert with imaginary sink type | |
57 | hg convert --dest-type foo a a-foo |
|
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 | true |
|
65 | true |
@@ -273,3 +273,17 b' initializing destination a-foo repositor' | |||||
273 | abort: foo: invalid source repository type |
|
273 | abort: foo: invalid source repository type | |
274 | % convert with imaginary sink type |
|
274 | % convert with imaginary sink type | |
275 | abort: foo: invalid destination repository type |
|
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