Rev 4635: bit of cleanup passes in http://bazaar.launchpad.net/~jameinel/bzr/1.19-known-graph-sorted
John Arbash Meinel
john at arbash-meinel.com
Mon Aug 17 18:47:54 BST 2009
At http://bazaar.launchpad.net/~jameinel/bzr/1.19-known-graph-sorted
------------------------------------------------------------
revno: 4635
revision-id: john at arbash-meinel.com-20090817174733-362c8a9rd2r659mz
parent: john at arbash-meinel.com-20090817172306-2w72juabo9wkj1vc
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: 1.19-known-graph-sorted
timestamp: Mon 2009-08-17 12:47:33 -0500
message:
bit of cleanup passes
-------------- next part --------------
=== modified file 'bzrlib/_known_graph_pyx.pyx'
--- a/bzrlib/_known_graph_pyx.pyx 2009-08-17 17:23:06 +0000
+++ b/bzrlib/_known_graph_pyx.pyx 2009-08-17 17:47:33 +0000
@@ -481,9 +481,10 @@
self._scheduled_nodes = []
if tip_key is not None and tip_key != NULL_REVISION:
node = self.graph._nodes[tip_key]
+ self._get_ms_node(node)
self._push_node(node, 0)
- cdef _MergeSortNode _get_or_create_node(self, _KnownGraphNode node):
+ cdef _MergeSortNode _get_ms_node(self, _KnownGraphNode node):
cdef PyObject *temp_node
cdef _MergeSortNode ms_node
@@ -499,7 +500,7 @@
cdef _MergeSortNode ms_node, ms_parent_node
cdef Py_ssize_t pos
- ms_node = self._get_or_create_node(node)
+ ms_node = self._get_ms_node(node)
ms_node.merge_depth = merge_depth
if PyTuple_GET_SIZE(node.parents) > 0:
parent_node = _get_parent(node.parents, 0)
@@ -515,7 +516,7 @@
ms_node.is_first_child = 1
if ms_node.left_parent is not None:
- ms_parent_node = self._get_or_create_node(ms_node.left_parent)
+ ms_parent_node = self._get_ms_node(ms_node.left_parent)
if ms_parent_node.seen_by_child:
ms_node.is_first_child = 0
ms_parent_node.seen_by_child = 1
@@ -538,8 +539,7 @@
self._last_stack_item = self._last_stack_item - 1
# print 'popping: %s' % (ms_node,)
if ms_node.left_parent is not None:
- # Assign the revision number for *this* node, from its left-hand
- # parent
+ # Assign the revision number from the left-hand parent
ms_parent_node = <_MergeSortNode>ms_node.left_parent.extra
if ms_node.is_first_child:
# First child just increments the final digit
@@ -548,6 +548,7 @@
ms_node.revno_last = ms_parent_node.revno_last + 1
else:
# Not the first child, make a new branch
+ # (mainline_revno, branch_count, 1)
if ms_parent_node.revno_first == -1:
# Mainline ancestor, the increment is on the last digit
base_revno = ms_parent_node.revno_last
@@ -561,28 +562,26 @@
branch_count = (<object>temp) + 1
PyDict_SetItem(self._revno_to_branch_count, base_revno,
branch_count)
- if ms_parent_node.revno_first == -1:
- ms_node.revno_first = ms_parent_node.revno_last
- else:
- ms_node.revno_first = ms_parent_node.revno_first
+ ms_node.revno_first = base_revno
ms_node.revno_second = branch_count
ms_node.revno_last = 1
else:
- root_count = self._revno_to_branch_count.get(0, -1)
- root_count = root_count + 1
- if root_count:
- ms_node.revno_first = 0
- ms_node.revno_second = root_count
- ms_node.revno_last = 1
- else:
+ temp = PyDict_GetItem(self._revno_to_branch_count, 0)
+ if temp == NULL:
# The first root node doesn't have a 3-digit revno
+ root_count = 0
ms_node.revno_first = -1
ms_node.revno_second = -1
ms_node.revno_last = 1
- self._revno_to_branch_count[0] = root_count
+ else:
+ root_count = (<object>temp) + 1
+ ms_node.revno_first = 0
+ ms_node.revno_second = root_count
+ ms_node.revno_last = 1
+ PyDict_SetItem(self._revno_to_branch_count, 0, root_count)
ms_node.completed = 1
if PyList_GET_SIZE(self._scheduled_nodes) == 0:
- # The final node is always the end of merge
+ # The first scheduled node is always the end of merge
ms_node.end_of_merge = True
else:
prev_node = _get_list_node(self._scheduled_nodes,
@@ -632,7 +631,7 @@
# display nicely (you get smaller trees at the top
# of the combined merge).
next_node = ms_last_node.pending_parents.pop()
- ms_next_node = self._get_or_create_node(next_node)
+ ms_next_node = self._get_ms_node(next_node)
if ms_next_node.completed:
# this parent was completed by a child on the
# call stack. skip it.
More information about the bazaar-commits
mailing list