comparison hgsubversion/maps.py @ 1430:48beb467b2e5

RevMap: use self._filepath instead of using meta Part of a series to stop referencing meta inside the map classes.
author Augie Fackler <raf@durin42.com>
date Sun, 05 Jun 2016 20:37:28 -0400
parents 3a723188051e
children 066c08918060
comparison
equal deleted inserted replaced
1429:3a723188051e 1430:48beb467b2e5
345 VERSION = 1 345 VERSION = 1
346 346
347 def __init__(self, meta): 347 def __init__(self, meta):
348 dict.__init__(self) 348 dict.__init__(self)
349 self.meta = meta 349 self.meta = meta
350 self._filepath = meta.revmap_file
350 self._hashes = None 351 self._hashes = None
351 352
352 if os.path.isfile(self.meta.revmap_file): 353 if os.path.isfile(self._filepath):
353 self._load() 354 self._load()
354 else: 355 else:
355 self._write() 356 self._write()
356 357
357 def hashes(self): 358 def hashes(self):
393 items is an array of (rev num, branch, binary hash) 394 items is an array of (rev num, branch, binary hash)
394 395
395 For performance reason, internal in-memory state is not updated. 396 For performance reason, internal in-memory state is not updated.
396 To get an up-to-date RevMap, reconstruct the object. 397 To get an up-to-date RevMap, reconstruct the object.
397 ''' 398 '''
398 f = open(self.meta.revmap_file, 'a') 399 f = open(self._filepath, 'a')
399 f.write(''.join('%s %s %s\n' % (revnum, hex(binhash), br or '') 400 f.write(''.join('%s %s %s\n' % (revnum, hex(binhash), br or '')
400 for revnum, br, binhash in items)) 401 for revnum, br, binhash in items))
401 f.close() 402 f.close()
402 403
403 def _readmapfile(self): 404 def _readmapfile(self):
404 path = self.meta.revmap_file 405 path = self._filepath
405 try: 406 try:
406 f = open(path) 407 f = open(path)
407 except IOError, err: 408 except IOError, err:
408 if err.errno != errno.ENOENT: 409 if err.errno != errno.ENOENT:
409 raise 410 raise
436 setitem(self, (revnum, branch), bin(ha)) 437 setitem(self, (revnum, branch), bin(ha))
437 self.meta.lastpulled = lastpulled 438 self.meta.lastpulled = lastpulled
438 self.meta.firstpulled = firstpulled 439 self.meta.firstpulled = firstpulled
439 440
440 def _write(self): 441 def _write(self):
441 f = open(self.meta.revmap_file, 'w') 442 f = open(self._filepath, 'w')
442 f.write('%s\n' % self.VERSION) 443 f.write('%s\n' % self.VERSION)
443 f.close() 444 f.close()
444 445
445 def __setitem__(self, key, ha): 446 def __setitem__(self, key, ha):
446 revnum, branch = key 447 revnum, branch = key
447 f = open(self.meta.revmap_file, 'a') 448 f = open(self._filepath, 'a')
448 b = branch or '' 449 b = branch or ''
449 f.write(str(revnum) + ' ' + hex(ha) + ' ' + b + '\n') 450 f.write(str(revnum) + ' ' + hex(ha) + ' ' + b + '\n')
450 f.close() 451 f.close()
451 if revnum > self.meta.lastpulled or not self.meta.lastpulled: 452 if revnum > self.meta.lastpulled or not self.meta.lastpulled:
452 self.meta.lastpulled = revnum 453 self.meta.lastpulled = revnum