# # # patch "monotone.py" # from [bd43c3db542b333b7fc2382412333ad111bfb4ff] # to [2dff75c63bf007f86d0b3806c5a085890d27757f] # ============================================================ --- monotone.py bd43c3db542b333b7fc2382412333ad111bfb4ff +++ monotone.py 2dff75c63bf007f86d0b3806c5a085890d27757f @@ -18,8 +18,10 @@ old_revision_re = re.compile(r'^old_revision \[(\S+)\]$') old_manifest_re = re.compile(r'^old_manifest \[(\S+)\]$') -manifest_entry_re = re.compile("^(\S+) *(.*)$") +manifest_entry_re = re.compile(r'^(\S+) *(.*)$') +log_entry_re = re.compile(r'^(\S+): (.*)$') + class Monotone: def __init__(self, mt, dbfile): self.mt = mt @@ -92,6 +94,23 @@ raise Exception("Unable to retrieve file: %s" % (result['childerr'])) else: return result['fromchild'] + def ancestry(self, id, limit=0): + rv = [] + entry = None + for line in utility.iter_command(self.base_command + " log %s" % (pipes.quote(id))): + if dash_re.match(line): + print "dash" + entry = {} + elif entry != None: + if not line: + rv.append(entry) + entry = None + if limit > 0 and len(rv) >= limit: break + else: + m = log_entry_re.match(line) + if m: entry[m.groups()[0]] = m.groups()[1] + if entry: rv.append(entry) + return rv def is_valid_id(s): return len(s) == 40 and id_re.match(s) != None