remote: separate remote/cache/tree into distinct concepts #3882
Labels
enhancement
Enhances DVC
p1-important
Important, aka current backlog of things to do
refactoring
Factoring and re-factoring
Currently,
Remote
classes can contain methods that fall into three categories:gc
/etcsave
/checkout
/link
/etcexists
/isfile
/isdir
/upload
/download
/etcHaving all of these methods grouped into a single
Remote
class causes issues when we are dealing with paths that can come from different namespaces (trees). In particular,LocalRemote
was originally written with the assumption that all paths for local remote or local cache operations are always filesystem paths, which is no longer the case given that we now need to supportGitTree
objects (via brancher and erepos).Ex.
LocalRemote.exists(path)
is used in different places as a replacement foros.path.exists()
to test ifpath
exists in a local remote, ifpath
exists in the local cache directory, and ifpath
exists in a DVC repo, even though these are distinct operations.Tasks:
RemoteTree
(remote: separate tree functions from main remote classes #3931, remote: finish separating RemoteTree methods #3946)path_info
parameters which can belong to a namespace other thanremote.tree
should take explicittree
parameters, so it is always clear what treepath_info
applies to (remote: separate cloud remote and cloud cache classes #4019)repo.tree
(since local cache always operates on a filesystem working tree, butrepo.tree
does not) (remote: use separate working tree instance for local cache #3991)The text was updated successfully, but these errors were encountered: