We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
import: error message when imported file does not exist
## Description

When you import a file from a exernal Git repository but you specify a wrong path you receive a confusing error message.

### Reproduce
```
dvc import git@github.com:iterative/example-get-started data/fake.xml
```

### Expected

A concise error that informs that data/fake.xml does not exist.

### Environment information

```
DVC version: 2.3.0 (pip)
---------------------------------
Platform: Python 3.7.9 on Linux-4.15.0-96-generic-x86_64-with-debian-buster-sid
Supports: http, https
Cache types: symlink
Cache directory: nfs on 10.10.30.245:/NAS/VA
Caches: local
Remotes: None
Workspace directory: ext4 on /dev/sdb1
Repo: dvc, git
```

I would like to help fix this problem, I thought about adding some regression test for https://github.com/iterative/dvc/blob/master/dvc/repo/imp_url.py similar to https://github.com/iterative/dvc/blob/master/tests/func/test_import_url.py#L107 and catch the exception later to return a proper message

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `dvc/dependency/repo.py`
Content:
```
1 import os
2 from collections import defaultdict
3 from typing import TYPE_CHECKING, Dict, Optional, Set
4 
5 from voluptuous import Required
6 
7 from dvc.path_info import PathInfo
8 
9 from .base import Dependency
10 
11 if TYPE_CHECKING:
12     from dvc.objects.db.base import ObjectDB
13     from dvc.objects.file import HashFile
14 
15 
16 class RepoDependency(Dependency):
17     PARAM_REPO = "repo"
18     PARAM_URL = "url"
19     PARAM_REV = "rev"
20     PARAM_REV_LOCK = "rev_lock"
21 
22     REPO_SCHEMA = {
23         PARAM_REPO: {
24             Required(PARAM_URL): str,
25             PARAM_REV: str,
26             PARAM_REV_LOCK: str,
27         }
28     }
29 
30     def __init__(self, def_repo, stage, *args, **kwargs):
31         self.def_repo = def_repo
32         self._staged_objs: Dict[str, "HashFile"] = {}
33         super().__init__(stage, *args, **kwargs)
34 
35     def _parse_path(self, fs, path_info):
36         return None
37 
38     @property
39     def is_in_repo(self):
40         return False
41 
42     def __str__(self):
43         return "{} ({})".format(self.def_path, self.def_repo[self.PARAM_URL])
44 
45     def workspace_status(self):
46         current = self.get_obj(locked=True).hash_info
47         updated = self.get_obj(locked=False).hash_info
48 
49         if current != updated:
50             return {str(self): "update available"}
51 
52         return {}
53 
54     def status(self):
55         return self.workspace_status()
56 
57     def save(self):
58         pass
59 
60     def dumpd(self):
61         return {self.PARAM_PATH: self.def_path, self.PARAM_REPO: self.def_repo}
62 
63     def download(self, to, jobs=None):
64         from dvc.checkout import checkout
65         from dvc.objects import save
66         from dvc.objects.db.git import GitObjectDB
67         from dvc.repo.fetch import fetch_from_odb
68 
69         for odb, objs in self.get_used_objs().items():
70             if not isinstance(odb, GitObjectDB):
71                 fetch_from_odb(self.repo, odb, objs, jobs=jobs)
72 
73         obj = self.get_obj()
74         save(self.repo.odb.local, obj, jobs=jobs)
75         checkout(
76             to.path_info,
77             to.fs,
78             obj,
79             self.repo.odb.local,
80             dvcignore=None,
81             state=self.repo.state,
82         )
83 
84     def update(self, rev=None):
85         if rev:
86             self.def_repo[self.PARAM_REV] = rev
87         with self._make_repo(locked=False) as repo:
88             self.def_repo[self.PARAM_REV_LOCK] = repo.get_rev()
89 
90     def changed_checksum(self):
91         # From current repo point of view what describes RepoDependency is its
92         # origin project url and rev_lock, and it makes RepoDependency
93         # immutable, hence its impossible for checksum to change.
94         return False
95 
96     def get_used_objs(
97         self, **kwargs
98     ) -> Dict[Optional["ObjectDB"], Set["HashFile"]]:
99         from dvc.config import NoRemoteError
100         from dvc.exceptions import NoOutputOrStageError
101         from dvc.objects.db.git import GitObjectDB
102         from dvc.objects.stage import stage
103 
104         local_odb = self.repo.odb.local
105         locked = kwargs.pop("locked", True)
106         with self._make_repo(
107             locked=locked, cache_dir=local_odb.cache_dir
108         ) as repo:
109             used_objs = defaultdict(set)
110             rev = repo.get_rev()
111             if locked and self.def_repo.get(self.PARAM_REV_LOCK) is None:
112                 self.def_repo[self.PARAM_REV_LOCK] = rev
113 
114             path_info = PathInfo(repo.root_dir) / str(self.def_path)
115             try:
116                 for odb, objs in repo.used_objs(
117                     [os.fspath(path_info)],
118                     force=True,
119                     jobs=kwargs.get("jobs"),
120                     recursive=True,
121                 ).items():
122                     if odb is None:
123                         odb = repo.cloud.get_remote().odb
124                     self._check_circular_import(odb)
125                     used_objs[odb].update(objs)
126             except (NoRemoteError, NoOutputOrStageError):
127                 pass
128 
129             staged_obj = stage(
130                 local_odb,
131                 path_info,
132                 repo.repo_fs,
133                 local_odb.fs.PARAM_CHECKSUM,
134             )
135             self._staged_objs[rev] = staged_obj
136             git_odb = GitObjectDB(repo.repo_fs, repo.root_dir)
137             used_objs[git_odb].add(staged_obj)
138             return used_objs
139 
140     def _check_circular_import(self, odb):
141         from dvc.exceptions import CircularImportError
142         from dvc.fs.repo import RepoFileSystem
143 
144         if not odb or not isinstance(odb.fs, RepoFileSystem):
145             return
146 
147         self_url = self.repo.url or self.repo.root_dir
148         if odb.fs.repo_url is not None and odb.fs.repo_url == self_url:
149             raise CircularImportError(self, odb.fs.repo_url, self_url)
150 
151     def get_obj(self, filter_info=None, **kwargs):
152         from dvc.objects.stage import stage
153 
154         odb = self.repo.odb.local
155         locked = kwargs.pop("locked", True)
156         with self._make_repo(locked=locked, cache_dir=odb.cache_dir) as repo:
157             rev = repo.get_rev()
158             if locked and self.def_repo.get(self.PARAM_REV_LOCK) is None:
159                 self.def_repo[self.PARAM_REV_LOCK] = rev
160             obj = self._staged_objs.get(rev)
161             if obj is not None:
162                 return obj
163 
164             path_info = PathInfo(repo.root_dir) / str(self.def_path)
165             obj = stage(
166                 odb,
167                 path_info,
168                 repo.repo_fs,
169                 odb.fs.PARAM_CHECKSUM,
170             )
171             self._staged_objs[rev] = obj
172             return obj
173 
174     def _make_repo(self, locked=True, **kwargs):
175         from dvc.external_repo import external_repo
176 
177         d = self.def_repo
178         rev = self._get_rev(locked=locked)
179         return external_repo(d[self.PARAM_URL], rev=rev, **kwargs)
180 
181     def _get_rev(self, locked=True):
182         d = self.def_repo
183         return (d.get(self.PARAM_REV_LOCK) if locked else None) or d.get(
184             self.PARAM_REV
185         )
186
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/dvc/dependency/repo.py b/dvc/dependency/repo.py
--- a/dvc/dependency/repo.py
+++ b/dvc/dependency/repo.py
@@ -97,7 +97,7 @@
         self, **kwargs
     ) -> Dict[Optional["ObjectDB"], Set["HashFile"]]:
         from dvc.config import NoRemoteError
-        from dvc.exceptions import NoOutputOrStageError
+        from dvc.exceptions import NoOutputOrStageError, PathMissingError
         from dvc.objects.db.git import GitObjectDB
         from dvc.objects.stage import stage
 
@@ -126,12 +126,18 @@
             except (NoRemoteError, NoOutputOrStageError):
                 pass
 
-            staged_obj = stage(
-                local_odb,
-                path_info,
-                repo.repo_fs,
-                local_odb.fs.PARAM_CHECKSUM,
-            )
+            try:
+                staged_obj = stage(
+                    local_odb,
+                    path_info,
+                    repo.repo_fs,
+                    local_odb.fs.PARAM_CHECKSUM,
+                )
+            except FileNotFoundError as exc:
+                raise PathMissingError(
+                    self.def_path, self.def_repo[self.PARAM_URL]
+                ) from exc
+
             self._staged_objs[rev] = staged_obj
             git_odb = GitObjectDB(repo.repo_fs, repo.root_dir)
             used_objs[git_odb].add(staged_obj)

{"golden_diff": "diff --git a/dvc/dependency/repo.py b/dvc/dependency/repo.py\n--- a/dvc/dependency/repo.py\n+++ b/dvc/dependency/repo.py\n@@ -97,7 +97,7 @@\n         self, **kwargs\n     ) -> Dict[Optional[\"ObjectDB\"], Set[\"HashFile\"]]:\n         from dvc.config import NoRemoteError\n-        from dvc.exceptions import NoOutputOrStageError\n+        from dvc.exceptions import NoOutputOrStageError, PathMissingError\n         from dvc.objects.db.git import GitObjectDB\n         from dvc.objects.stage import stage\n \n@@ -126,12 +126,18 @@\n             except (NoRemoteError, NoOutputOrStageError):\n                 pass\n \n-            staged_obj = stage(\n-                local_odb,\n-                path_info,\n-                repo.repo_fs,\n-                local_odb.fs.PARAM_CHECKSUM,\n-            )\n+            try:\n+                staged_obj = stage(\n+                    local_odb,\n+                    path_info,\n+                    repo.repo_fs,\n+                    local_odb.fs.PARAM_CHECKSUM,\n+                )\n+            except FileNotFoundError as exc:\n+                raise PathMissingError(\n+                    self.def_path, self.def_repo[self.PARAM_URL]\n+                ) from exc\n+\n             self._staged_objs[rev] = staged_obj\n             git_odb = GitObjectDB(repo.repo_fs, repo.root_dir)\n             used_objs[git_odb].add(staged_obj)\n", "issue": "import: error message when imported file does not exist\n## Description\r\n\r\nWhen you import a file from a exernal Git repository but you specify a wrong path you receive a confusing error message.\r\n\r\n### Reproduce\r\n```\r\ndvc import git@github.com:iterative/example-get-started data/fake.xml\r\n```\r\n\r\n### Expected\r\n\r\nA concise error that informs that data/fake.xml does not exist.\r\n\r\n### Environment information\r\n\r\n```\r\nDVC version: 2.3.0 (pip)\r\n---------------------------------\r\nPlatform: Python 3.7.9 on Linux-4.15.0-96-generic-x86_64-with-debian-buster-sid\r\nSupports: http, https\r\nCache types: symlink\r\nCache directory: nfs on 10.10.30.245:/NAS/VA\r\nCaches: local\r\nRemotes: None\r\nWorkspace directory: ext4 on /dev/sdb1\r\nRepo: dvc, git\r\n```\r\n\r\nI would like to help fix this problem, I thought about adding some regression test for https://github.com/iterative/dvc/blob/master/dvc/repo/imp_url.py similar to https://github.com/iterative/dvc/blob/master/tests/func/test_import_url.py#L107 and catch the exception later to return a proper message\n", "before_files": [{"content": "import os\nfrom collections import defaultdict\nfrom typing import TYPE_CHECKING, Dict, Optional, Set\n\nfrom voluptuous import Required\n\nfrom dvc.path_info import PathInfo\n\nfrom .base import Dependency\n\nif TYPE_CHECKING:\n    from dvc.objects.db.base import ObjectDB\n    from dvc.objects.file import HashFile\n\n\nclass RepoDependency(Dependency):\n    PARAM_REPO = \"repo\"\n    PARAM_URL = \"url\"\n    PARAM_REV = \"rev\"\n    PARAM_REV_LOCK = \"rev_lock\"\n\n    REPO_SCHEMA = {\n        PARAM_REPO: {\n            Required(PARAM_URL): str,\n            PARAM_REV: str,\n            PARAM_REV_LOCK: str,\n        }\n    }\n\n    def __init__(self, def_repo, stage, *args, **kwargs):\n        self.def_repo = def_repo\n        self._staged_objs: Dict[str, \"HashFile\"] = {}\n        super().__init__(stage, *args, **kwargs)\n\n    def _parse_path(self, fs, path_info):\n        return None\n\n    @property\n    def is_in_repo(self):\n        return False\n\n    def __str__(self):\n        return \"{} ({})\".format(self.def_path, self.def_repo[self.PARAM_URL])\n\n    def workspace_status(self):\n        current = self.get_obj(locked=True).hash_info\n        updated = self.get_obj(locked=False).hash_info\n\n        if current != updated:\n            return {str(self): \"update available\"}\n\n        return {}\n\n    def status(self):\n        return self.workspace_status()\n\n    def save(self):\n        pass\n\n    def dumpd(self):\n        return {self.PARAM_PATH: self.def_path, self.PARAM_REPO: self.def_repo}\n\n    def download(self, to, jobs=None):\n        from dvc.checkout import checkout\n        from dvc.objects import save\n        from dvc.objects.db.git import GitObjectDB\n        from dvc.repo.fetch import fetch_from_odb\n\n        for odb, objs in self.get_used_objs().items():\n            if not isinstance(odb, GitObjectDB):\n                fetch_from_odb(self.repo, odb, objs, jobs=jobs)\n\n        obj = self.get_obj()\n        save(self.repo.odb.local, obj, jobs=jobs)\n        checkout(\n            to.path_info,\n            to.fs,\n            obj,\n            self.repo.odb.local,\n            dvcignore=None,\n            state=self.repo.state,\n        )\n\n    def update(self, rev=None):\n        if rev:\n            self.def_repo[self.PARAM_REV] = rev\n        with self._make_repo(locked=False) as repo:\n            self.def_repo[self.PARAM_REV_LOCK] = repo.get_rev()\n\n    def changed_checksum(self):\n        # From current repo point of view what describes RepoDependency is its\n        # origin project url and rev_lock, and it makes RepoDependency\n        # immutable, hence its impossible for checksum to change.\n        return False\n\n    def get_used_objs(\n        self, **kwargs\n    ) -> Dict[Optional[\"ObjectDB\"], Set[\"HashFile\"]]:\n        from dvc.config import NoRemoteError\n        from dvc.exceptions import NoOutputOrStageError\n        from dvc.objects.db.git import GitObjectDB\n        from dvc.objects.stage import stage\n\n        local_odb = self.repo.odb.local\n        locked = kwargs.pop(\"locked\", True)\n        with self._make_repo(\n            locked=locked, cache_dir=local_odb.cache_dir\n        ) as repo:\n            used_objs = defaultdict(set)\n            rev = repo.get_rev()\n            if locked and self.def_repo.get(self.PARAM_REV_LOCK) is None:\n                self.def_repo[self.PARAM_REV_LOCK] = rev\n\n            path_info = PathInfo(repo.root_dir) / str(self.def_path)\n            try:\n                for odb, objs in repo.used_objs(\n                    [os.fspath(path_info)],\n                    force=True,\n                    jobs=kwargs.get(\"jobs\"),\n                    recursive=True,\n                ).items():\n                    if odb is None:\n                        odb = repo.cloud.get_remote().odb\n                    self._check_circular_import(odb)\n                    used_objs[odb].update(objs)\n            except (NoRemoteError, NoOutputOrStageError):\n                pass\n\n            staged_obj = stage(\n                local_odb,\n                path_info,\n                repo.repo_fs,\n                local_odb.fs.PARAM_CHECKSUM,\n            )\n            self._staged_objs[rev] = staged_obj\n            git_odb = GitObjectDB(repo.repo_fs, repo.root_dir)\n            used_objs[git_odb].add(staged_obj)\n            return used_objs\n\n    def _check_circular_import(self, odb):\n        from dvc.exceptions import CircularImportError\n        from dvc.fs.repo import RepoFileSystem\n\n        if not odb or not isinstance(odb.fs, RepoFileSystem):\n            return\n\n        self_url = self.repo.url or self.repo.root_dir\n        if odb.fs.repo_url is not None and odb.fs.repo_url == self_url:\n            raise CircularImportError(self, odb.fs.repo_url, self_url)\n\n    def get_obj(self, filter_info=None, **kwargs):\n        from dvc.objects.stage import stage\n\n        odb = self.repo.odb.local\n        locked = kwargs.pop(\"locked\", True)\n        with self._make_repo(locked=locked, cache_dir=odb.cache_dir) as repo:\n            rev = repo.get_rev()\n            if locked and self.def_repo.get(self.PARAM_REV_LOCK) is None:\n                self.def_repo[self.PARAM_REV_LOCK] = rev\n            obj = self._staged_objs.get(rev)\n            if obj is not None:\n                return obj\n\n            path_info = PathInfo(repo.root_dir) / str(self.def_path)\n            obj = stage(\n                odb,\n                path_info,\n                repo.repo_fs,\n                odb.fs.PARAM_CHECKSUM,\n            )\n            self._staged_objs[rev] = obj\n            return obj\n\n    def _make_repo(self, locked=True, **kwargs):\n        from dvc.external_repo import external_repo\n\n        d = self.def_repo\n        rev = self._get_rev(locked=locked)\n        return external_repo(d[self.PARAM_URL], rev=rev, **kwargs)\n\n    def _get_rev(self, locked=True):\n        d = self.def_repo\n        return (d.get(self.PARAM_REV_LOCK) if locked else None) or d.get(\n            self.PARAM_REV\n        )\n", "path": "dvc/dependency/repo.py"}], "after_files": [{"content": "import os\nfrom collections import defaultdict\nfrom typing import TYPE_CHECKING, Dict, Optional, Set\n\nfrom voluptuous import Required\n\nfrom dvc.path_info import PathInfo\n\nfrom .base import Dependency\n\nif TYPE_CHECKING:\n    from dvc.objects.db.base import ObjectDB\n    from dvc.objects.file import HashFile\n\n\nclass RepoDependency(Dependency):\n    PARAM_REPO = \"repo\"\n    PARAM_URL = \"url\"\n    PARAM_REV = \"rev\"\n    PARAM_REV_LOCK = \"rev_lock\"\n\n    REPO_SCHEMA = {\n        PARAM_REPO: {\n            Required(PARAM_URL): str,\n            PARAM_REV: str,\n            PARAM_REV_LOCK: str,\n        }\n    }\n\n    def __init__(self, def_repo, stage, *args, **kwargs):\n        self.def_repo = def_repo\n        self._staged_objs: Dict[str, \"HashFile\"] = {}\n        super().__init__(stage, *args, **kwargs)\n\n    def _parse_path(self, fs, path_info):\n        return None\n\n    @property\n    def is_in_repo(self):\n        return False\n\n    def __str__(self):\n        return \"{} ({})\".format(self.def_path, self.def_repo[self.PARAM_URL])\n\n    def workspace_status(self):\n        current = self.get_obj(locked=True).hash_info\n        updated = self.get_obj(locked=False).hash_info\n\n        if current != updated:\n            return {str(self): \"update available\"}\n\n        return {}\n\n    def status(self):\n        return self.workspace_status()\n\n    def save(self):\n        pass\n\n    def dumpd(self):\n        return {self.PARAM_PATH: self.def_path, self.PARAM_REPO: self.def_repo}\n\n    def download(self, to, jobs=None):\n        from dvc.checkout import checkout\n        from dvc.objects import save\n        from dvc.objects.db.git import GitObjectDB\n        from dvc.repo.fetch import fetch_from_odb\n\n        for odb, objs in self.get_used_objs().items():\n            if not isinstance(odb, GitObjectDB):\n                fetch_from_odb(self.repo, odb, objs, jobs=jobs)\n\n        obj = self.get_obj()\n        save(self.repo.odb.local, obj, jobs=jobs)\n        checkout(\n            to.path_info,\n            to.fs,\n            obj,\n            self.repo.odb.local,\n            dvcignore=None,\n            state=self.repo.state,\n        )\n\n    def update(self, rev=None):\n        if rev:\n            self.def_repo[self.PARAM_REV] = rev\n        with self._make_repo(locked=False) as repo:\n            self.def_repo[self.PARAM_REV_LOCK] = repo.get_rev()\n\n    def changed_checksum(self):\n        # From current repo point of view what describes RepoDependency is its\n        # origin project url and rev_lock, and it makes RepoDependency\n        # immutable, hence its impossible for checksum to change.\n        return False\n\n    def get_used_objs(\n        self, **kwargs\n    ) -> Dict[Optional[\"ObjectDB\"], Set[\"HashFile\"]]:\n        from dvc.config import NoRemoteError\n        from dvc.exceptions import NoOutputOrStageError, PathMissingError\n        from dvc.objects.db.git import GitObjectDB\n        from dvc.objects.stage import stage\n\n        local_odb = self.repo.odb.local\n        locked = kwargs.pop(\"locked\", True)\n        with self._make_repo(\n            locked=locked, cache_dir=local_odb.cache_dir\n        ) as repo:\n            used_objs = defaultdict(set)\n            rev = repo.get_rev()\n            if locked and self.def_repo.get(self.PARAM_REV_LOCK) is None:\n                self.def_repo[self.PARAM_REV_LOCK] = rev\n\n            path_info = PathInfo(repo.root_dir) / str(self.def_path)\n            try:\n                for odb, objs in repo.used_objs(\n                    [os.fspath(path_info)],\n                    force=True,\n                    jobs=kwargs.get(\"jobs\"),\n                    recursive=True,\n                ).items():\n                    if odb is None:\n                        odb = repo.cloud.get_remote().odb\n                    self._check_circular_import(odb)\n                    used_objs[odb].update(objs)\n            except (NoRemoteError, NoOutputOrStageError):\n                pass\n\n            try:\n                staged_obj = stage(\n                    local_odb,\n                    path_info,\n                    repo.repo_fs,\n                    local_odb.fs.PARAM_CHECKSUM,\n                )\n            except FileNotFoundError as exc:\n                raise PathMissingError(\n                    self.def_path, self.def_repo[self.PARAM_URL]\n                ) from exc\n\n            self._staged_objs[rev] = staged_obj\n            git_odb = GitObjectDB(repo.repo_fs, repo.root_dir)\n            used_objs[git_odb].add(staged_obj)\n            return used_objs\n\n    def _check_circular_import(self, odb):\n        from dvc.exceptions import CircularImportError\n        from dvc.fs.repo import RepoFileSystem\n\n        if not odb or not isinstance(odb.fs, RepoFileSystem):\n            return\n\n        self_url = self.repo.url or self.repo.root_dir\n        if odb.fs.repo_url is not None and odb.fs.repo_url == self_url:\n            raise CircularImportError(self, odb.fs.repo_url, self_url)\n\n    def get_obj(self, filter_info=None, **kwargs):\n        from dvc.objects.stage import stage\n\n        odb = self.repo.odb.local\n        locked = kwargs.pop(\"locked\", True)\n        with self._make_repo(locked=locked, cache_dir=odb.cache_dir) as repo:\n            rev = repo.get_rev()\n            if locked and self.def_repo.get(self.PARAM_REV_LOCK) is None:\n                self.def_repo[self.PARAM_REV_LOCK] = rev\n            obj = self._staged_objs.get(rev)\n            if obj is not None:\n                return obj\n\n            path_info = PathInfo(repo.root_dir) / str(self.def_path)\n            obj = stage(\n                odb,\n                path_info,\n                repo.repo_fs,\n                odb.fs.PARAM_CHECKSUM,\n            )\n            self._staged_objs[rev] = obj\n            return obj\n\n    def _make_repo(self, locked=True, **kwargs):\n        from dvc.external_repo import external_repo\n\n        d = self.def_repo\n        rev = self._get_rev(locked=locked)\n        return external_repo(d[self.PARAM_URL], rev=rev, **kwargs)\n\n    def _get_rev(self, locked=True):\n        d = self.def_repo\n        return (d.get(self.PARAM_REV_LOCK) if locked else None) or d.get(\n            self.PARAM_REV\n        )\n", "path": "dvc/dependency/repo.py"}]}