Rev 2679: Remove usage of difference_update in knit.py. in http://people.ubuntu.com/~robertc/baz2.0/repository
Robert Collins
robertc at robertcollins.net
Thu Jul 26 06:29:36 BST 2007
At http://people.ubuntu.com/~robertc/baz2.0/repository
------------------------------------------------------------
revno: 2679
revision-id: robertc at robertcollins.net-20070726052933-8uflqpri7n5lba0c
parent: robertc at robertcollins.net-20070726043556-f27nyuewg69iopql
committer: Robert Collins <robertc at robertcollins.net>
branch nick: repository
timestamp: Thu 2007-07-26 15:29:33 +1000
message:
Remove usage of difference_update in knit.py.
modified:
bzrlib/knit.py knit.py-20051212171256-f056ac8f0fbe1bd9
=== modified file 'bzrlib/knit.py'
--- a/bzrlib/knit.py 2007-07-26 03:26:31 +0000
+++ b/bzrlib/knit.py 2007-07-26 05:29:33 +0000
@@ -1421,6 +1421,7 @@
# get all pending nodes
this_iteration = pending
new_nodes = self._get_entries(this_iteration)
+ found = set()
pending = set()
for (key, value, node_refs) in new_nodes:
# dont ask for ghosties - otherwise
@@ -1428,11 +1429,14 @@
# being entirely ghosted.
graph[key] = [parent for parent in node_refs[0]
if parent not in ghosts]
- # queue parents
- pending.update(graph[key])
- ghosts.difference_update(graph)
- # dont examine known nodes
- pending.difference_update(graph)
+ # queue parents
+ for parent in graph[key]:
+ # dont examine known nodes again
+ if parent in graph:
+ continue
+ pending.add(parent)
+ found.add(key)
+ ghosts.update(this_iteration.difference(found))
if versions.difference(graph):
raise RevisionNotPresent(versions.difference(graph).pop(), self)
if not topo_sorted:
@@ -1457,7 +1461,11 @@
for (key, value, node_refs) in new_nodes:
graph[key] = node_refs[0]
# queue parents
- pending.update(graph[key])
+ for parent in graph[key]:
+ # dont examine known nodes again
+ if parent in graph:
+ continue
+ pending.add(parent)
missing_versions = this_iteration.difference(graph)
missing_needed = versions.intersection(missing_versions)
if missing_needed:
@@ -1465,8 +1473,7 @@
for missing_version in missing_versions:
# add a key, no parents
graph[missing_version] = []
- # dont examine known nodes
- pending.difference_update(graph)
+ pending.discard(missing_version) # don't look for it
return topo_sort(graph.items())
def get_graph(self):
More information about the bazaar-commits
mailing list