mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-02 07:18:25 +01:00
@@ -43,10 +43,10 @@ def _get_conf(repo, **kwargs):
|
||||
remote_conf = repo.config["remote"][name.lower()]
|
||||
else:
|
||||
remote_conf = kwargs
|
||||
return _resolve_remote_refs(repo.config, remote_conf)
|
||||
return _resolve_remote_refs(repo, remote_conf)
|
||||
|
||||
|
||||
def _resolve_remote_refs(config, remote_conf):
|
||||
def _resolve_remote_refs(repo, remote_conf):
|
||||
# Support for cross referenced remotes.
|
||||
# This will merge the settings, shadowing base ref with remote_conf.
|
||||
# For example, having:
|
||||
@@ -72,7 +72,7 @@ def _resolve_remote_refs(config, remote_conf):
|
||||
if parsed.scheme != "remote":
|
||||
return remote_conf
|
||||
|
||||
base = config["remote"][parsed.netloc]
|
||||
base = _get_conf(repo, name=parsed.netloc)
|
||||
url = posixpath.join(base["url"], parsed.path.lstrip("/"))
|
||||
return {**base, **remote_conf, "url": url}
|
||||
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
from dvc.path_info import CloudURLInfo
|
||||
from dvc.tree import get_cloud_tree
|
||||
|
||||
|
||||
def test_get_cloud_tree(tmp_dir, dvc):
|
||||
tmp_dir.add_remote(name="base", url="s3://bucket/path", default=False)
|
||||
tmp_dir.add_remote(name="first", url="remote://base/first", default=False)
|
||||
tmp_dir.add_remote(
|
||||
name="second", url="remote://first/second", default=False
|
||||
)
|
||||
|
||||
base = CloudURLInfo("s3://bucket/path")
|
||||
first = base / "first"
|
||||
second = first / "second"
|
||||
|
||||
assert get_cloud_tree(dvc, name="base").path_info == base
|
||||
assert get_cloud_tree(dvc, name="first").path_info == first
|
||||
assert get_cloud_tree(dvc, name="second").path_info == second
|
||||
Reference in New Issue
Block a user