60
60
end_of_merge)) in enumerate(merge_sorted_revisions):
62
62
revid_index[revid] = index
63
revno_index[revno_sequence] = index
64
65
branch_id = revno_sequence[0:-1]
68
if branch_id not in branch_lines:
70
branch_lines[branch_id] = branch_line
71
branch_line["rev_indexes"] = []
72
branch_line["min_index"] = index - 1
73
branch_line["max_index"] = 0
75
branch_line = branch_lines[branch_id]
76
branch_line["rev_indexes"].append(index)
77
if index > branch_line["max_index"]:
78
branch_line["max_index"] = index
66
80
parents = graph_parents[revid]
67
81
for parent_revid in parents:
68
82
graph_children[parent_revid].append(revid)
70
children = graph_children[revid]
72
color = reduce(lambda x, y: x+y, branch_id, 0)
73
linegraph.append((revid,
84
linegraph.append([revid,
91
branch_ids = branch_lines.keys()
95
for branch_id in branch_ids:
96
branch_line = branch_lines[branch_id]
97
if len(branch_id) >= 2:
98
branch_parent_revno = branch_id[0:-1]
99
if branch_parent_revno in revno_index:
100
branch_line["max_index"] = revno_index[branch_parent_revno]
105
start_col_index = branch_lines[branch_id[0:-2]]["col_index"]+1
106
for col_search_index in range(start_col_index,len(columns)):
107
column = columns[col_search_index]
110
if (line["min_index"] <= branch_line["min_index"] and \
111
line["max_index"] > branch_line["min_index"]) or \
112
(line["max_index"] >= branch_line["max_index"] and \
113
line["min_index"] < branch_line["max_index"]):
114
clashing_lines.append(line)
116
if not clashing_lines:
117
col_index = col_search_index
121
col_index = len(columns)
124
columns[col_index].append(branch_line)
125
branch_line["col_index"] = col_index
128
for branch_id in branch_ids:
129
branch_line = branch_lines[branch_id]
130
color = reduce(lambda x, y: x+y, branch_id, 0)
131
col_index = branch_line["col_index"]
132
node = (col_index, color)
134
for rev_index in branch_line["rev_indexes"]:
139
end_of_merge) = merge_sorted_revisions[rev_index]
140
children = graph_children[revid]
142
linegraph[rev_index][1] = node
143
linegraph[rev_index][4] = children
144
for child_revid in children:
145
if child_revid in revid_index:
146
child_index = revid_index[child_revid]
147
child_revno_sequence = \
148
merge_sorted_revisions[child_index][3]
149
child_merge_depth = merge_sorted_revisions[child_index][2]
150
child_branch_id = child_revno_sequence[0:-1]
151
child_col_index = branch_lines[child_branch_id]["col_index"]
152
if child_merge_depth < merge_depth:
153
#out from the child to line
154
linegraph[child_index][2].append(
158
for line_part_index in range(child_index+1, rev_index):
159
linegraph[line_part_index][2].append(
164
for line_part_index in range(child_index, rev_index-1):
165
linegraph[line_part_index][2].append(
170
linegraph[rev_index-1][2].append(
80
175
return (linegraph, revid_index)