mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-02 07:18:25 +01:00
odbmgr: separate repo and local odbs
This commit is contained in:
+1
-1
@@ -58,7 +58,7 @@ def _get_caches(cache):
|
|||||||
caches = (
|
caches = (
|
||||||
cache_type
|
cache_type
|
||||||
for cache_type, cache_instance in cache.by_scheme()
|
for cache_type, cache_instance in cache.by_scheme()
|
||||||
if cache_instance
|
if cache_instance and cache_type != "repo"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Caches will be always non-empty including the local cache
|
# Caches will be always non-empty including the local cache
|
||||||
|
|||||||
+5
-3
@@ -24,7 +24,7 @@ class ODBManager:
|
|||||||
]
|
]
|
||||||
|
|
||||||
def __init__(self, repo):
|
def __init__(self, repo):
|
||||||
self.repo = repo
|
self._repo = repo
|
||||||
self.config = config = repo.config["cache"]
|
self.config = config = repo.config["cache"]
|
||||||
self._odb = {}
|
self._odb = {}
|
||||||
|
|
||||||
@@ -42,13 +42,15 @@ class ODBManager:
|
|||||||
if opt in config:
|
if opt in config:
|
||||||
settings[str(opt)] = config.get(opt)
|
settings[str(opt)] = config.get(opt)
|
||||||
|
|
||||||
self._odb[Schemes.LOCAL] = _get_odb(repo, settings)
|
odb = _get_odb(repo, settings)
|
||||||
|
self._odb["repo"] = odb
|
||||||
|
self._odb[Schemes.LOCAL] = odb
|
||||||
|
|
||||||
def _init_odb(self, schemes):
|
def _init_odb(self, schemes):
|
||||||
for scheme in schemes:
|
for scheme in schemes:
|
||||||
remote = self.config.get(scheme)
|
remote = self.config.get(scheme)
|
||||||
settings = {"name": remote} if remote else None
|
settings = {"name": remote} if remote else None
|
||||||
self._odb[scheme] = _get_odb(self.repo, settings)
|
self._odb[scheme] = _get_odb(self._repo, settings)
|
||||||
|
|
||||||
def __getattr__(self, name):
|
def __getattr__(self, name):
|
||||||
if name not in self._odb and name in self.CLOUD_SCHEMES:
|
if name not in self._odb and name in self.CLOUD_SCHEMES:
|
||||||
|
|||||||
+2
-1
@@ -409,7 +409,8 @@ class Output:
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def odb(self):
|
def odb(self):
|
||||||
odb = getattr(self.repo.odb, self.protocol)
|
odb_name = "repo" if self.is_in_repo else self.protocol
|
||||||
|
odb = getattr(self.repo.odb, odb_name)
|
||||||
if self.use_cache and odb is None:
|
if self.use_cache and odb is None:
|
||||||
raise RemoteCacheRequiredError(self.fs.protocol, self.fs_path)
|
raise RemoteCacheRequiredError(self.fs.protocol, self.fs_path)
|
||||||
return odb
|
return odb
|
||||||
|
|||||||
@@ -364,13 +364,13 @@ class Repo:
|
|||||||
)
|
)
|
||||||
|
|
||||||
def unprotect(self, target):
|
def unprotect(self, target):
|
||||||
return self.odb.local.unprotect(target)
|
return self.odb.repo.unprotect(target)
|
||||||
|
|
||||||
def _ignore(self):
|
def _ignore(self):
|
||||||
flist = [self.config.files["local"], self.tmp_dir]
|
flist = [self.config.files["local"], self.tmp_dir]
|
||||||
|
|
||||||
if path_isin(self.odb.local.cache_dir, self.root_dir):
|
if path_isin(self.odb.repo.cache_dir, self.root_dir):
|
||||||
flist += [self.odb.local.cache_dir]
|
flist += [self.odb.repo.cache_dir]
|
||||||
|
|
||||||
for file in flist:
|
for file in flist:
|
||||||
self.scm_context.ignore(file)
|
self.scm_context.ignore(file)
|
||||||
|
|||||||
+2
-2
@@ -168,7 +168,7 @@ def _diff_index_to_wtree(repo: "Repo", **kwargs: Any) -> Dict[str, List[str]]:
|
|||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
new = None
|
new = None
|
||||||
|
|
||||||
cache = repo.odb.local
|
cache = repo.odb.repo
|
||||||
root = str(out)
|
root = str(out)
|
||||||
old = out.get_obj()
|
old = out.get_obj()
|
||||||
with ui.status(f"Calculating diff for {root} between index/workspace"):
|
with ui.status(f"Calculating diff for {root} between index/workspace"):
|
||||||
@@ -196,7 +196,7 @@ def _diff_head_to_index(
|
|||||||
typ = "index" if rev == "workspace" else head
|
typ = "index" if rev == "workspace" else head
|
||||||
objs[root][typ] = out.get_obj()
|
objs[root][typ] = out.get_obj()
|
||||||
|
|
||||||
cache = repo.odb.local
|
cache = repo.odb.repo
|
||||||
for root, obj_d in objs.items():
|
for root, obj_d in objs.items():
|
||||||
old = obj_d.get(head, None)
|
old = obj_d.get(head, None)
|
||||||
new = obj_d.get("index", None)
|
new = obj_d.get("index", None)
|
||||||
|
|||||||
+2
-2
@@ -140,9 +140,9 @@ def _output_paths(repo, targets):
|
|||||||
|
|
||||||
if on_working_fs:
|
if on_working_fs:
|
||||||
_, _, obj = build(
|
_, _, obj = build(
|
||||||
repo.odb.local,
|
repo.odb.repo,
|
||||||
output.fs_path,
|
output.fs_path,
|
||||||
repo.odb.local.fs,
|
repo.odb.repo.fs,
|
||||||
"md5",
|
"md5",
|
||||||
dry_run=True,
|
dry_run=True,
|
||||||
ignore=output.dvcignore,
|
ignore=output.dvcignore,
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ class TempDirExecutor(BaseLocalExecutor):
|
|||||||
|
|
||||||
def init_cache(self, repo: "Repo", rev: str, run_cache: bool = True):
|
def init_cache(self, repo: "Repo", rev: str, run_cache: bool = True):
|
||||||
"""Initialize DVC cache."""
|
"""Initialize DVC cache."""
|
||||||
self._config(repo.odb.local.cache_dir)
|
self._config(repo.odb.repo.cache_dir)
|
||||||
|
|
||||||
def cleanup(self):
|
def cleanup(self):
|
||||||
super().cleanup()
|
super().cleanup()
|
||||||
|
|||||||
Reference in New Issue
Block a user