summaryrefslogtreecommitdiff
path: root/git/db/py/ref.py
diff options
context:
space:
mode:
Diffstat (limited to 'git/db/py/ref.py')
-rw-r--r--git/db/py/ref.py20
1 files changed, 11 insertions, 9 deletions
diff --git a/git/db/py/ref.py b/git/db/py/ref.py
index 75bc4fd1..3552f2a3 100644
--- a/git/db/py/ref.py
+++ b/git/db/py/ref.py
@@ -7,18 +7,20 @@ from base import PureCompoundDB
import os
__all__ = ('PureReferenceDB', )
+
class PureReferenceDB(PureCompoundDB):
+
"""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 PureGitODB
ObjectDBCls = None
-
+
def __init__(self, ref_file):
super(PureReferenceDB, self).__init__()
self._ref_file = ref_file
-
+
def _set_cache_(self, attr):
if attr == '_dbs':
self._dbs = list()
@@ -26,7 +28,7 @@ class PureReferenceDB(PureCompoundDB):
else:
super(PureReferenceDB, self)._set_cache_(attr)
# END handle attrs
-
+
def _update_dbs_from_ref_file(self):
dbcls = self.ObjectDBCls
if dbcls is None:
@@ -34,7 +36,7 @@ class PureReferenceDB(PureCompoundDB):
import complex
dbcls = complex.PureGitODB
# END get db type
-
+
# try to get as many as possible, don't fail if some are unavailable
ref_paths = list()
try:
@@ -42,10 +44,10 @@ class PureReferenceDB(PureCompoundDB):
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[:]):
@@ -54,7 +56,7 @@ class PureReferenceDB(PureCompoundDB):
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))
@@ -70,7 +72,7 @@ class PureReferenceDB(PureCompoundDB):
# 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()