Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/revlog.py @ 1073:7b35a980b982
[PATCH] raise exceptions with Exception subclasses
Fixed the patch. Using Exception subclasses.
(tweaked by mpm)
author | Bart Trojanowski <bart@jukie.net> |
---|---|
date | Fri, 26 Aug 2005 19:08:25 -0700 |
parents | 6d5a62a549fa |
children | 55bf5cfde69e |
comparison
equal
deleted
inserted
replaced
1072:05dc7aba22eb | 1073:7b35a980b982 |
---|---|
30 if not bin: return bin | 30 if not bin: return bin |
31 t = bin[0] | 31 t = bin[0] |
32 if t == '\0': return bin | 32 if t == '\0': return bin |
33 if t == 'x': return zlib.decompress(bin) | 33 if t == 'x': return zlib.decompress(bin) |
34 if t == 'u': return bin[1:] | 34 if t == 'u': return bin[1:] |
35 raise "unknown compression type %s" % t | 35 raise RevlogError("unknown compression type %s" % t) |
36 | 36 |
37 def hash(text, p1, p2): | 37 def hash(text, p1, p2): |
38 l = [p1, p2] | 38 l = [p1, p2] |
39 l.sort() | 39 l.sort() |
40 s = sha.new(l[0]) | 40 s = sha.new(l[0]) |
118 except KeyError: | 118 except KeyError: |
119 raise KeyError("node " + hex(key)) | 119 raise KeyError("node " + hex(key)) |
120 def __setitem__(self, key, val): | 120 def __setitem__(self, key, val): |
121 self.p.map[key] = val | 121 self.p.map[key] = val |
122 | 122 |
123 class RevlogError(Exception): pass | |
124 | |
123 class revlog: | 125 class revlog: |
124 def __init__(self, opener, indexfile, datafile): | 126 def __init__(self, opener, indexfile, datafile): |
125 self.indexfile = indexfile | 127 self.indexfile = indexfile |
126 self.datafile = datafile | 128 self.datafile = datafile |
127 self.opener = opener | 129 self.opener = opener |
503 node, p1, p2, cs = struct.unpack("20s20s20s20s", chunk[:80]) | 505 node, p1, p2, cs = struct.unpack("20s20s20s20s", chunk[:80]) |
504 link = linkmapper(cs) | 506 link = linkmapper(cs) |
505 if node in self.nodemap: | 507 if node in self.nodemap: |
506 # this can happen if two branches make the same change | 508 # this can happen if two branches make the same change |
507 if unique: | 509 if unique: |
508 raise "already have %s" % hex(node[:4]) | 510 raise RevlogError("already have %s" % hex(node[:4])) |
509 chain = node | 511 chain = node |
510 continue | 512 continue |
511 delta = chunk[80:] | 513 delta = chunk[80:] |
512 | 514 |
513 if not chain: | 515 if not chain: |
514 # retrieve the parent revision of the delta chain | 516 # retrieve the parent revision of the delta chain |
515 chain = p1 | 517 chain = p1 |
516 if not chain in self.nodemap: | 518 if not chain in self.nodemap: |
517 raise "unknown base %s" % short(chain[:4]) | 519 raise RevlogError("unknown base %s" % short(chain[:4])) |
518 | 520 |
519 # full versions are inserted when the needed deltas become | 521 # full versions are inserted when the needed deltas become |
520 # comparable to the uncompressed text or when the previous | 522 # comparable to the uncompressed text or when the previous |
521 # version is not the one we have a delta against. We use | 523 # version is not the one we have a delta against. We use |
522 # the size of the previous full rev as a proxy for the | 524 # the size of the previous full rev as a proxy for the |
531 ifh.flush() | 533 ifh.flush() |
532 text = self.revision(chain) | 534 text = self.revision(chain) |
533 text = self.patches(text, [delta]) | 535 text = self.patches(text, [delta]) |
534 chk = self.addrevision(text, transaction, link, p1, p2) | 536 chk = self.addrevision(text, transaction, link, p1, p2) |
535 if chk != node: | 537 if chk != node: |
536 raise "consistency error adding group" | 538 raise RevlogError("consistency error adding group") |
537 measure = len(text) | 539 measure = len(text) |
538 else: | 540 else: |
539 e = (end, len(cdelta), self.base(t), link, p1, p2, node) | 541 e = (end, len(cdelta), self.base(t), link, p1, p2, node) |
540 self.index.append(e) | 542 self.index.append(e) |
541 self.nodemap[node] = r | 543 self.nodemap[node] = r |