diff options
Diffstat (limited to 'cvs2svn_lib/check_dependencies_pass.py')
-rw-r--r-- | cvs2svn_lib/check_dependencies_pass.py | 144 |
1 files changed, 0 insertions, 144 deletions
diff --git a/cvs2svn_lib/check_dependencies_pass.py b/cvs2svn_lib/check_dependencies_pass.py deleted file mode 100644 index 172c264..0000000 --- a/cvs2svn_lib/check_dependencies_pass.py +++ /dev/null @@ -1,144 +0,0 @@ -# (Be in -*- python -*- mode.) -# -# ==================================================================== -# Copyright (c) 2000-2008 CollabNet. All rights reserved. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at http://subversion.tigris.org/license-1.html. -# If newer versions of this license are posted there, you may use a -# newer version instead, at your option. -# -# This software consists of voluntary contributions made by many -# individuals. For exact contribution history, see the revision -# history and logs, available at http://cvs2svn.tigris.org/. -# ==================================================================== - -"""This module defines some passes that can be used for debugging cv2svn.""" - - -from cvs2svn_lib import config -from cvs2svn_lib.context import Ctx -from cvs2svn_lib.common import FatalException -from cvs2svn_lib.common import DB_OPEN_READ -from cvs2svn_lib.log import Log -from cvs2svn_lib.pass_manager import Pass -from cvs2svn_lib.project import read_projects -from cvs2svn_lib.artifact_manager import artifact_manager -from cvs2svn_lib.cvs_file_database import CVSFileDatabase -from cvs2svn_lib.symbol_database import SymbolDatabase -from cvs2svn_lib.cvs_item_database import OldCVSItemStore -from cvs2svn_lib.cvs_item_database import IndexedCVSItemStore - - -class CheckDependenciesPass(Pass): - """Check that the dependencies are self-consistent.""" - - def __init__(self): - Pass.__init__(self) - - def register_artifacts(self): - self._register_temp_file_needed(config.PROJECTS) - self._register_temp_file_needed(config.SYMBOL_DB) - self._register_temp_file_needed(config.CVS_FILES_DB) - - def iter_cvs_items(self): - raise NotImplementedError() - - def get_cvs_item(self, item_id): - raise NotImplementedError() - - def run(self, run_options, stats_keeper): - Ctx()._projects = read_projects( - artifact_manager.get_temp_file(config.PROJECTS) - ) - Ctx()._cvs_file_db = CVSFileDatabase(DB_OPEN_READ) - self.symbol_db = SymbolDatabase() - Ctx()._symbol_db = self.symbol_db - - Log().quiet("Checking dependency consistency...") - - fatal_errors = [] - for cvs_item in self.iter_cvs_items(): - # Check that the pred_ids and succ_ids are mutually consistent: - for pred_id in cvs_item.get_pred_ids(): - pred = self.get_cvs_item(pred_id) - if not cvs_item.id in pred.get_succ_ids(): - fatal_errors.append( - '%s lists pred=%s, but not vice versa.' % (cvs_item, pred,)) - - for succ_id in cvs_item.get_succ_ids(): - succ = self.get_cvs_item(succ_id) - if not cvs_item.id in succ.get_pred_ids(): - fatal_errors.append( - '%s lists succ=%s, but not vice versa.' % (cvs_item, succ,)) - - if fatal_errors: - raise FatalException( - 'Dependencies inconsistent:\n' - '%s\n' - 'Exited due to fatal error(s).' - % ('\n'.join(fatal_errors),) - ) - - self.symbol_db.close() - self.symbol_db = None - Ctx()._cvs_file_db.close() - Log().quiet("Done") - - -class CheckItemStoreDependenciesPass(CheckDependenciesPass): - def __init__(self, cvs_items_store_file): - CheckDependenciesPass.__init__(self) - self.cvs_items_store_file = cvs_items_store_file - - def register_artifacts(self): - CheckDependenciesPass.register_artifacts(self) - self._register_temp_file_needed(self.cvs_items_store_file) - - def iter_cvs_items(self): - cvs_item_store = OldCVSItemStore( - artifact_manager.get_temp_file(self.cvs_items_store_file)) - - for cvs_file_items in cvs_item_store.iter_cvs_file_items(): - self.current_cvs_file_items = cvs_file_items - for cvs_item in cvs_file_items.values(): - yield cvs_item - - del self.current_cvs_file_items - - cvs_item_store.close() - - def get_cvs_item(self, item_id): - return self.current_cvs_file_items[item_id] - - -class CheckIndexedItemStoreDependenciesPass(CheckDependenciesPass): - def __init__(self, cvs_items_store_file, cvs_items_store_index_file): - CheckDependenciesPass.__init__(self) - self.cvs_items_store_file = cvs_items_store_file - self.cvs_items_store_index_file = cvs_items_store_index_file - - def register_artifacts(self): - CheckDependenciesPass.register_artifacts(self) - self._register_temp_file_needed(self.cvs_items_store_file) - self._register_temp_file_needed(self.cvs_items_store_index_file) - - def iter_cvs_items(self): - return self.cvs_item_store.itervalues() - - def get_cvs_item(self, item_id): - return self.cvs_item_store[item_id] - - def run(self, run_options, stats_keeper): - self.cvs_item_store = IndexedCVSItemStore( - artifact_manager.get_temp_file(self.cvs_items_store_file), - artifact_manager.get_temp_file(self.cvs_items_store_index_file), - DB_OPEN_READ) - - CheckDependenciesPass.run(self, run_options, stats_keeper) - - self.cvs_item_store.close() - self.cvs_item_store = None - - |