diff options
Diffstat (limited to 'gitdb/db/ref.py')
| -rw-r--r-- | gitdb/db/ref.py | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/gitdb/db/ref.py b/gitdb/db/ref.py index 0a28b9e..d989126 100644 --- a/gitdb/db/ref.py +++ b/gitdb/db/ref.py @@ -2,25 +2,24 @@ # # This module is part of GitDB and is released under # the New BSD License: http://www.opensource.org/licenses/bsd-license.php -from base import ( - CompoundDB, - ) +from gitdb.db.base import ( + CompoundDB, +) -import os __all__ = ('ReferenceDB', ) class ReferenceDB(CompoundDB): """A database consisting of database referred to in a file""" - + # Configuration # Specifies the object database to use for the paths found in the alternates # file. If None, it defaults to the GitDB ObjectDBCls = None - + def __init__(self, ref_file): super(ReferenceDB, self).__init__() self._ref_file = ref_file - + def _set_cache_(self, attr): if attr == '_dbs': self._dbs = list() @@ -28,15 +27,15 @@ class ReferenceDB(CompoundDB): else: super(ReferenceDB, self)._set_cache_(attr) # END handle attrs - + def _update_dbs_from_ref_file(self): dbcls = self.ObjectDBCls if dbcls is None: # late import - from git import GitDB + from gitdb.db.git import GitDB dbcls = GitDB # END get db type - + # try to get as many as possible, don't fail if some are unavailable ref_paths = list() try: @@ -44,10 +43,10 @@ class ReferenceDB(CompoundDB): except (OSError, IOError): pass # END handle alternates - + ref_paths_set = set(ref_paths) cur_ref_paths_set = set(db.root_path() for db in self._dbs) - + # remove existing for path in (cur_ref_paths_set - ref_paths_set): for i, db in enumerate(self._dbs[:]): @@ -56,7 +55,7 @@ class ReferenceDB(CompoundDB): continue # END del matching db # END for each path to remove - + # add new # sort them to maintain order added_paths = sorted(ref_paths_set - cur_ref_paths_set, key=lambda p: ref_paths.index(p)) @@ -68,11 +67,11 @@ class ReferenceDB(CompoundDB): db.databases() # END verification self._dbs.append(db) - except Exception as e: + except Exception: # ignore invalid paths or issues pass # END for each path to add - + def update_cache(self, force=False): # re-read alternates and update databases self._update_dbs_from_ref_file() |
