Rev 2994: Change the contract for VersionedFileChecker to consolidate related parameters rather than splitting them across two api calls. This allows better reuse of a single checker object. in http://people.ubuntu.com/~robertc/baz2.0/reconcile
Robert Collins
robertc at robertcollins.net
Thu Nov 15 22:38:35 GMT 2007
At http://people.ubuntu.com/~robertc/baz2.0/reconcile
------------------------------------------------------------
revno: 2994
revision-id:robertc at robertcollins.net-20071115223817-m5mzq041xuj5xu42
parent: robertc at robertcollins.net-20071115211844-3npqwsnifwdsh5kr
committer: Robert Collins <robertc at robertcollins.net>
branch nick: get_versioned_file_checker
timestamp: Fri 2007-11-16 09:38:17 +1100
message:
Change the contract for VersionedFileChecker to consolidate related parameters rather than splitting them across two api calls. This allows better reuse of a single checker object.
modified:
bzrlib/check.py check.py-20050309040759-f3a679400c06bcc1
bzrlib/reconcile.py reweave_inventory.py-20051108164726-1e5e0934febac06e
bzrlib/repository.py rev_storage.py-20051111201905-119e9401e46257e3
=== modified file 'bzrlib/check.py'
--- a/bzrlib/check.py 2007-10-26 06:48:09 +0000
+++ b/bzrlib/check.py 2007-11-15 22:38:17 +0000
@@ -208,16 +208,15 @@
self.inventory_weave.check(progress_bar=self.progress)
files_in_revisions = {}
revisions_of_files = {}
+ weave_checker = self.repository.get_versioned_file_checker()
for i, weave_id in enumerate(weave_ids):
self.progress.update('checking versionedfile', i, n_weaves)
w = self.repository.weave_store.get_weave(weave_id,
self.repository.get_transaction())
# No progress here, because it looks ugly.
w.check()
-
- weave_checker = self.repository.get_versioned_file_checker(
+ result = weave_checker.check_file_version_parents(w, weave_id,
self.planned_revisions, self.revision_versions)
- result = weave_checker.check_file_version_parents(w, weave_id)
bad_parents, dangling_versions = result
bad_parents = bad_parents.items()
for revision_id, (weave_parents,correct_parents) in bad_parents:
=== modified file 'bzrlib/reconcile.py'
--- a/bzrlib/reconcile.py 2007-11-04 20:35:32 +0000
+++ b/bzrlib/reconcile.py 2007-11-15 22:38:17 +0000
@@ -382,14 +382,14 @@
len(versions))
revision_versions.prepopulate_revs(versions)
used_file_versions = revision_versions.used_file_versions()
+ vf_checker = self.repo.get_versioned_file_checker()
for num, file_id in enumerate(self.repo.weave_store):
self.pb.update('Fixing text parents', num,
len(self.repo.weave_store))
vf = self.repo.weave_store.get_weave(file_id, transaction)
- vf_checker = self.repo.get_versioned_file_checker(
+ versions_with_bad_parents, dangling_file_versions = \
+ vf_checker.check_file_version_parents(vf, file_id,
vf.versions(), revision_versions)
- versions_with_bad_parents, dangling_file_versions = \
- vf_checker.check_file_version_parents(vf, file_id)
if (len(versions_with_bad_parents) == 0 and
len(dangling_file_versions) == 0):
continue
=== modified file 'bzrlib/repository.py'
--- a/bzrlib/repository.py 2007-11-15 21:18:44 +0000
+++ b/bzrlib/repository.py 2007-11-15 22:38:17 +0000
@@ -1649,8 +1649,9 @@
[parents_provider, other_repository._make_parents_provider()])
return graph.Graph(parents_provider)
- def get_versioned_file_checker(self, revisions, revision_versions_cache):
- return VersionedFileChecker(revisions, revision_versions_cache, self)
+ def get_versioned_file_checker(self):
+ """Return an object suitable for checking versioned files."""
+ return VersionedFileChecker(self)
@needs_write_lock
def set_make_working_trees(self, new_value):
@@ -2875,9 +2876,7 @@
class VersionedFileChecker(object):
- def __init__(self, planned_revisions, revision_versions, repository):
- self.planned_revisions = planned_revisions
- self.revision_versions = revision_versions
+ def __init__(self, repository):
self.repository = repository
def calculate_file_version_parents(self, revision_id, file_id):
@@ -2905,7 +2904,8 @@
new_parents.append(parent)
return tuple(new_parents)
- def check_file_version_parents(self, weave, file_id):
+ def check_file_version_parents(self, weave, file_id, planned_revisions,
+ revision_versions):
"""Check the parents stored in a versioned file are correct.
It also detects file versions that are not referenced by their
@@ -2918,6 +2918,9 @@
revision_id) tuples for versions that are present in this versioned
file, but not used by the corresponding inventory.
"""
+ # store the current task in instance variables.
+ self.planned_revisions = planned_revisions
+ self.revision_versions = revision_versions
wrong_parents = {}
dangling_file_versions = set()
for num, revision_id in enumerate(self.planned_revisions):
More information about the bazaar-commits
mailing list