if not os.path.exists(repodir):
croak("repository subdirectory %s does not exist" % repodir)
self.start = self.end = None
+ self.seq = None
if type(args) == type(()):
args = list(args)
self.args = list(args)
"Set the range to all revisions."
self.start = 1
self.end = len(metadata)
+ self.seq = range(self.start, self.end+1)
def select_tip(self, metadata):
"Set the range to the tip revision."
self.start = len(metadata)
self.end = None
+ self.seq = [self.start]
def __contains__(self, i):
"Does the spec contain the given revno?"
- return i >= self.start and (self.end is None or i <= self.end)
+ if self.seq is None:
+ croak("revision spec hasn't been resolved")
+ return i in self.seq
def resolve(self, metadata):
"Resolve a revision spec that may contain tags into revnos."
if self.is_empty():
+ self.seq = []
return self
if type(self.start) == type(""):
if self.start in metadata.symbols:
croak("can't resolve symbol {0} in {1}".format(self.end, metadata.name))
if self.end > len(metadata):
croak("{0} has no {1} revision".format(metadata.name, self.end))
+ self.seq = range(self.start, self.end+1)
class CommentContext:
def __init__(self, legend, args):
metadata = History(arg)
ctx.resolve(metadata)
if ctx.is_empty():
- ctx.start = metadata.tip().revno
+ ctx.select_tip(metadata)
revision = ""
elif ctx.start > len(metadata):
croak("%s has only %d revisions" % (arg, len(metadata)))
if name in metadata.symbols:
croak("tag %s already set.")
if ctx.is_empty():
- ctx.start = metadata.tip().revno
+ ctx.select_tip(metadata)
return metadata.revno_to_native(ctx.start)
tag_helper(args, "tag",
tag_set_validate,