1
from dotgraph import Node
2
from bzrlib.branch import Branch
5
def add_relations(rev_id):
6
if rev_id in ancestors:
9
if rev_id not in nodes:
10
nodes[rev_id] = Node("n%d" % counter, label = rev_id)
12
revision = branch.get_revision(rev_id)
13
ancestors [rev_id] = []
14
for p in (p.revision_id for p in revision.parents):
16
if p not in descendants:
18
descendants[p].append(rev_id)
19
ancestors [rev_id].append(rev_id)
21
def graph_ancestry(branch):
23
q = ((i+1, n) for (i, n) in enumerate(branch.revision_history()))
25
for (revno, rev_id) in q:
26
nodes[rev_id] = Node("R%d" % revno, color="#ffff00")
31
lines = [branch.last_patch()]
35
if rev_id not in nodes:
36
nodes[rev_id] = Node("n%d" % counter, label=rev_id)
40
revision = branch.get_revision(rev_id)
41
except bzrlib.errors.NoSuchRevision:
43
parent_ids = [r.revision_id for r in revision.parents]
44
ancestors [rev_id] = parent_ids
45
for parent in parent_ids:
46
if parent not in ancestors:
48
descendants[parent] = []
49
descendants[parent].append(rev_id)
52
for key, values in descendants.iteritems():
54
node_relations.append((nodes[key], nodes[value]))