if not os.path.exists(backend.master(self.name)):
croak("%s is not registered" % self.name)
backend.parse(self)
+ self.by_revno_d = {}
+ self.by_native_d = {}
+ for item in self.revlist:
+ self.by_revno_d[item.revno] = item
+ self.by_native_d[item.revision] = item
def __len__(self):
return len(self.revlist)
def current(self):
s = nxt
def native_to_revno(self, revision):
"Map a native ID to a revno"
- for item in self.revlist:
- if item.revision == revision:
- return item.revno
- return None
+ item = self.by_native_d.get(revision)
+ return item and item.revno
def by_revno(self, revno):
"Map a revno to a revision item."
- for item in self.revlist:
- if item.revno == revno:
- return item
- croak("{0} has no revno {1}".format(self.name, revno))
+ try:
+ return self.by_revno_d[revno]
+ except KeyError:
+ croak("{0} has no revno {1}".format(self.name, revno))
def revno_to_native(self, revno):
"Map a revno to a native ID"
- for item in self.revlist:
- if item.revno == revno:
- return item.revision
- croak("{0} has no revno {1}".format(self.name, revno))
+ return self.by_revno(revno).revision
def help_method(*_args):
"Summarize src commands, or (with argument) show help for a single command."