Mercurial > hg-stable
comparison mercurial/localrepo.py @ 4177:a7af0eeae8a3
Move branches.cache to branch.cache
Keeps old clients from conflicting with new caches, makes features
logic unnecessary.
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Tue, 13 Mar 2007 15:18:10 -0500 |
parents | f9bbcebcacea |
children | 0b48e3985765 |
comparison
equal
deleted
inserted
replaced
4176:f9bbcebcacea | 4177:a7af0eeae8a3 |
---|---|
15 demandload(globals(), "os revlog time util") | 15 demandload(globals(), "os revlog time util") |
16 | 16 |
17 class localrepository(repo.repository): | 17 class localrepository(repo.repository): |
18 capabilities = ('lookup', 'changegroupsubset') | 18 capabilities = ('lookup', 'changegroupsubset') |
19 supported = ('revlogv1', 'store') | 19 supported = ('revlogv1', 'store') |
20 branchcache_features = ('default',) | |
21 | 20 |
22 def __del__(self): | 21 def __del__(self): |
23 self.transhandle = None | 22 self.transhandle = None |
24 def __init__(self, parentui, path=None, create=0): | 23 def __init__(self, parentui, path=None, create=0): |
25 repo.repository.__init__(self) | 24 repo.repository.__init__(self) |
372 return self.branchcache | 371 return self.branchcache |
373 | 372 |
374 def _readbranchcache(self): | 373 def _readbranchcache(self): |
375 partial = {} | 374 partial = {} |
376 try: | 375 try: |
377 f = self.opener("branches.cache") | 376 f = self.opener("branch.cache") |
378 lines = f.read().split('\n') | 377 lines = f.read().split('\n') |
379 f.close() | 378 f.close() |
380 features = lines.pop(0).strip() | |
381 if not features.startswith('features: '): | |
382 raise ValueError(_('branch cache: no features specified')) | |
383 features = features.split(' ', 1)[1].split() | |
384 missing_features = [] | |
385 for feature in self.branchcache_features: | |
386 try: | |
387 features.remove(feature) | |
388 except ValueError, inst: | |
389 missing_features.append(feature) | |
390 if missing_features: | |
391 raise ValueError(_('branch cache: missing features: %s') | |
392 % ', '.join(missing_features)) | |
393 if features: | |
394 raise ValueError(_('branch cache: unknown features: %s') | |
395 % ', '.join(features)) | |
396 last, lrev = lines.pop(0).split(" ", 1) | 379 last, lrev = lines.pop(0).split(" ", 1) |
397 last, lrev = bin(last), int(lrev) | 380 last, lrev = bin(last), int(lrev) |
398 if not (lrev < self.changelog.count() and | 381 if not (lrev < self.changelog.count() and |
399 self.changelog.node(lrev) == last): # sanity check | 382 self.changelog.node(lrev) == last): # sanity check |
400 # invalidate the cache | 383 # invalidate the cache |
411 partial, last, lrev = {}, nullid, nullrev | 394 partial, last, lrev = {}, nullid, nullrev |
412 return partial, last, lrev | 395 return partial, last, lrev |
413 | 396 |
414 def _writebranchcache(self, branches, tip, tiprev): | 397 def _writebranchcache(self, branches, tip, tiprev): |
415 try: | 398 try: |
416 f = self.opener("branches.cache", "w") | 399 f = self.opener("branch.cache", "w") |
417 f.write(" features: %s\n" % ' '.join(self.branchcache_features)) | |
418 f.write("%s %s\n" % (hex(tip), tiprev)) | 400 f.write("%s %s\n" % (hex(tip), tiprev)) |
419 for label, node in branches.iteritems(): | 401 for label, node in branches.iteritems(): |
420 f.write("%s %s\n" % (hex(node), label)) | 402 f.write("%s %s\n" % (hex(node), label)) |
421 except IOError: | 403 except IOError: |
422 pass | 404 pass |