We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
`dvc remote add` replaces the existing remote silently
The `dvc remote add` command ignores the existing remote and overwrites it silently. 
```
→ dvc --version
0.32.1+7d7ed4
```

### To reproduce

```bash
dvc remote add s3 s3://bucket/subdir
dvc remote add s3 s3://bucket/subdir2
```

### Expected behavior

The second command `dvc remote add s3 s3://bucket/subdir2` should fail with the `Remote with name "s3" already exists` message.

### Current behavior

Remote URL is silently overwriten:
```bash
> cat .dvc/config
['remote "s3"']
url = s3://bucket/subdir2
```

--- 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/command/remote.py`
Content:
```
1 from __future__ import unicode_literals
2 
3 import argparse
4 import os
5 import re
6 
7 import dvc.logger as logger
8 from dvc.command.base import fix_subparsers, append_doc_link
9 from dvc.config import Config
10 from dvc.command.config import CmdConfig
11 
12 
13 class CmdRemoteAdd(CmdConfig):
14     @staticmethod
15     def resolve_path(path, config_file):
16         """Resolve path relative to config file location.
17 
18         Args:
19             path: Path to be resolved.
20             config_file: Path to config file, which `path` is specified
21                 relative to.
22 
23         Returns:
24             Path relative to the `config_file` location. If `path` is an
25             absolute path then it will be returned without change.
26 
27         """
28         if os.path.isabs(path):
29             return path
30         return os.path.relpath(path, os.path.dirname(config_file))
31 
32     def run(self):
33         from dvc.remote import _get, RemoteLOCAL
34 
35         remote = _get({Config.SECTION_REMOTE_URL: self.args.url})
36         if remote == RemoteLOCAL:
37             self.args.url = self.resolve_path(
38                 self.args.url, self.configobj.filename
39             )
40 
41         section = Config.SECTION_REMOTE_FMT.format(self.args.name)
42         ret = self._set(section, Config.SECTION_REMOTE_URL, self.args.url)
43         if ret != 0:
44             return ret
45 
46         if self.args.default:
47             msg = "Setting '{}' as a default remote.".format(self.args.name)
48             logger.info(msg)
49             ret = self._set(
50                 Config.SECTION_CORE, Config.SECTION_CORE_REMOTE, self.args.name
51             )
52 
53         return ret
54 
55 
56 class CmdRemoteRemove(CmdConfig):
57     def _remove_default(self, config):
58         core = config.get(Config.SECTION_CORE, None)
59         if core is None:
60             return 0
61 
62         default = core.get(Config.SECTION_CORE_REMOTE, None)
63         if default is None:
64             return 0
65 
66         if default == self.args.name:
67             return self._unset(
68                 Config.SECTION_CORE,
69                 opt=Config.SECTION_CORE_REMOTE,
70                 configobj=config,
71             )
72 
73     def run(self):
74         section = Config.SECTION_REMOTE_FMT.format(self.args.name)
75         ret = self._unset(section)
76         if ret != 0:
77             return ret
78 
79         for configobj in [
80             self.config._local_config,
81             self.config._repo_config,
82             self.config._global_config,
83             self.config._system_config,
84         ]:
85             self._remove_default(configobj)
86             self.config.save(configobj)
87             if configobj == self.configobj:
88                 break
89 
90         return 0
91 
92 
93 class CmdRemoteModify(CmdConfig):
94     def run(self):
95         section = Config.SECTION_REMOTE_FMT.format(self.args.name)
96         self.args.name = "{}.{}".format(section, self.args.option)
97         return super(CmdRemoteModify, self).run()
98 
99 
100 class CmdRemoteDefault(CmdConfig):
101     def run(self):
102         self.args.value = self.args.name
103         self.args.name = "core.remote"
104         return super(CmdRemoteDefault, self).run()
105 
106 
107 class CmdRemoteList(CmdConfig):
108     def run(self):
109         for section in self.configobj.keys():
110             r = re.match(Config.SECTION_REMOTE_REGEX, section)
111             if r:
112                 name = r.group("name")
113                 url = self.configobj[section].get(
114                     Config.SECTION_REMOTE_URL, ""
115                 )
116                 logger.info("{}\t{}".format(name, url))
117         return 0
118 
119 
120 def add_parser(subparsers, parent_parser):
121     from dvc.command.config import parent_config_parser
122 
123     REMOTE_HELP = "Manage remote storage configuration."
124     remote_parser = subparsers.add_parser(
125         "remote",
126         parents=[parent_parser],
127         description=append_doc_link(REMOTE_HELP, "remote"),
128         help=REMOTE_HELP,
129         formatter_class=argparse.RawDescriptionHelpFormatter,
130     )
131 
132     remote_subparsers = remote_parser.add_subparsers(
133         dest="cmd",
134         help="Use dvc remote CMD --help for " "command-specific help.",
135     )
136 
137     fix_subparsers(remote_subparsers)
138 
139     REMOTE_ADD_HELP = "Add remote."
140     remote_add_parser = remote_subparsers.add_parser(
141         "add",
142         parents=[parent_config_parser, parent_parser],
143         description=append_doc_link(REMOTE_ADD_HELP, "remote-add"),
144         help=REMOTE_ADD_HELP,
145         formatter_class=argparse.RawDescriptionHelpFormatter,
146     )
147     remote_add_parser.add_argument("name", help="Name.")
148     remote_add_parser.add_argument(
149         "url",
150         help="URL. See full list of supported urls at " "man.dvc.org/remote",
151     )
152     remote_add_parser.add_argument(
153         "-d",
154         "--default",
155         action="store_true",
156         default=False,
157         help="Set as default remote.",
158     )
159     remote_add_parser.set_defaults(func=CmdRemoteAdd)
160 
161     REMOTE_DEFAULT_HELP = "Set/unset default remote."
162     remote_default_parser = remote_subparsers.add_parser(
163         "default",
164         parents=[parent_config_parser, parent_parser],
165         description=append_doc_link(REMOTE_DEFAULT_HELP, "remote-default"),
166         help=REMOTE_DEFAULT_HELP,
167         formatter_class=argparse.RawDescriptionHelpFormatter,
168     )
169     remote_default_parser.add_argument(
170         "name", nargs="?", help="Name of the remote."
171     )
172     remote_default_parser.add_argument(
173         "-u",
174         "--unset",
175         action="store_true",
176         default=False,
177         help="Unset default remote.",
178     )
179     remote_default_parser.set_defaults(func=CmdRemoteDefault)
180 
181     REMOTE_REMOVE_HELP = "Remove remote."
182     remote_remove_parser = remote_subparsers.add_parser(
183         "remove",
184         parents=[parent_config_parser, parent_parser],
185         description=append_doc_link(REMOTE_REMOVE_HELP, "remote-remove"),
186         help=REMOTE_REMOVE_HELP,
187         formatter_class=argparse.RawDescriptionHelpFormatter,
188     )
189     remote_remove_parser.add_argument("name", help="Name")
190     remote_remove_parser.set_defaults(func=CmdRemoteRemove)
191 
192     REMOTE_MODIFY_HELP = "Modify remote."
193     remote_modify_parser = remote_subparsers.add_parser(
194         "modify",
195         parents=[parent_config_parser, parent_parser],
196         description=append_doc_link(REMOTE_MODIFY_HELP, "remote-modify"),
197         help=REMOTE_MODIFY_HELP,
198         formatter_class=argparse.RawDescriptionHelpFormatter,
199     )
200     remote_modify_parser.add_argument("name", help="Name.")
201     remote_modify_parser.add_argument("option", help="Option.")
202     remote_modify_parser.add_argument("value", nargs="?", help="Value.")
203     remote_modify_parser.add_argument(
204         "-u",
205         "--unset",
206         default=False,
207         action="store_true",
208         help="Unset option.",
209     )
210     remote_modify_parser.set_defaults(func=CmdRemoteModify)
211 
212     REMOTE_LIST_HELP = "List available remotes."
213     remote_list_parser = remote_subparsers.add_parser(
214         "list",
215         parents=[parent_config_parser, parent_parser],
216         description=append_doc_link(REMOTE_LIST_HELP, "remote-list"),
217         help=REMOTE_LIST_HELP,
218         formatter_class=argparse.RawDescriptionHelpFormatter,
219     )
220     remote_list_parser.set_defaults(func=CmdRemoteList)
221
```
--- 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/command/remote.py b/dvc/command/remote.py
--- a/dvc/command/remote.py
+++ b/dvc/command/remote.py
@@ -5,9 +5,9 @@
 import re
 
 import dvc.logger as logger
-from dvc.command.base import fix_subparsers, append_doc_link
-from dvc.config import Config
+from dvc.command.base import append_doc_link, fix_subparsers
 from dvc.command.config import CmdConfig
+from dvc.config import Config
 
 
 class CmdRemoteAdd(CmdConfig):
@@ -39,6 +39,14 @@
             )
 
         section = Config.SECTION_REMOTE_FMT.format(self.args.name)
+        if (section in self.configobj.keys()) and not self.args.force:
+            logger.error(
+                "Remote with name {} already exists. "
+                "Use -f (--force) to overwrite remote "
+                "with new value".format(self.args.name)
+            )
+            return 1
+
         ret = self._set(section, Config.SECTION_REMOTE_URL, self.args.url)
         if ret != 0:
             return ret
@@ -156,6 +164,13 @@
         default=False,
         help="Set as default remote.",
     )
+    remote_add_parser.add_argument(
+        "-f",
+        "--force",
+        action="store_true",
+        default=False,
+        help="Force overwriting existing configs",
+    )
     remote_add_parser.set_defaults(func=CmdRemoteAdd)
 
     REMOTE_DEFAULT_HELP = "Set/unset default remote."

{"golden_diff": "diff --git a/dvc/command/remote.py b/dvc/command/remote.py\n--- a/dvc/command/remote.py\n+++ b/dvc/command/remote.py\n@@ -5,9 +5,9 @@\n import re\n \n import dvc.logger as logger\n-from dvc.command.base import fix_subparsers, append_doc_link\n-from dvc.config import Config\n+from dvc.command.base import append_doc_link, fix_subparsers\n from dvc.command.config import CmdConfig\n+from dvc.config import Config\n \n \n class CmdRemoteAdd(CmdConfig):\n@@ -39,6 +39,14 @@\n             )\n \n         section = Config.SECTION_REMOTE_FMT.format(self.args.name)\n+        if (section in self.configobj.keys()) and not self.args.force:\n+            logger.error(\n+                \"Remote with name {} already exists. \"\n+                \"Use -f (--force) to overwrite remote \"\n+                \"with new value\".format(self.args.name)\n+            )\n+            return 1\n+\n         ret = self._set(section, Config.SECTION_REMOTE_URL, self.args.url)\n         if ret != 0:\n             return ret\n@@ -156,6 +164,13 @@\n         default=False,\n         help=\"Set as default remote.\",\n     )\n+    remote_add_parser.add_argument(\n+        \"-f\",\n+        \"--force\",\n+        action=\"store_true\",\n+        default=False,\n+        help=\"Force overwriting existing configs\",\n+    )\n     remote_add_parser.set_defaults(func=CmdRemoteAdd)\n \n     REMOTE_DEFAULT_HELP = \"Set/unset default remote.\"\n", "issue": "`dvc remote add` replaces the existing remote silently\nThe `dvc remote add` command ignores the existing remote and overwrites it silently. \r\n```\r\n\u2192 dvc --version\r\n0.32.1+7d7ed4\r\n```\r\n\r\n### To reproduce\r\n\r\n```bash\r\ndvc remote add s3 s3://bucket/subdir\r\ndvc remote add s3 s3://bucket/subdir2\r\n```\r\n\r\n### Expected behavior\r\n\r\nThe second command `dvc remote add s3 s3://bucket/subdir2` should fail with the `Remote with name \"s3\" already exists` message.\r\n\r\n### Current behavior\r\n\r\nRemote URL is silently overwriten:\r\n```bash\r\n> cat .dvc/config\r\n['remote \"s3\"']\r\nurl = s3://bucket/subdir2\r\n```\n", "before_files": [{"content": "from __future__ import unicode_literals\n\nimport argparse\nimport os\nimport re\n\nimport dvc.logger as logger\nfrom dvc.command.base import fix_subparsers, append_doc_link\nfrom dvc.config import Config\nfrom dvc.command.config import CmdConfig\n\n\nclass CmdRemoteAdd(CmdConfig):\n    @staticmethod\n    def resolve_path(path, config_file):\n        \"\"\"Resolve path relative to config file location.\n\n        Args:\n            path: Path to be resolved.\n            config_file: Path to config file, which `path` is specified\n                relative to.\n\n        Returns:\n            Path relative to the `config_file` location. If `path` is an\n            absolute path then it will be returned without change.\n\n        \"\"\"\n        if os.path.isabs(path):\n            return path\n        return os.path.relpath(path, os.path.dirname(config_file))\n\n    def run(self):\n        from dvc.remote import _get, RemoteLOCAL\n\n        remote = _get({Config.SECTION_REMOTE_URL: self.args.url})\n        if remote == RemoteLOCAL:\n            self.args.url = self.resolve_path(\n                self.args.url, self.configobj.filename\n            )\n\n        section = Config.SECTION_REMOTE_FMT.format(self.args.name)\n        ret = self._set(section, Config.SECTION_REMOTE_URL, self.args.url)\n        if ret != 0:\n            return ret\n\n        if self.args.default:\n            msg = \"Setting '{}' as a default remote.\".format(self.args.name)\n            logger.info(msg)\n            ret = self._set(\n                Config.SECTION_CORE, Config.SECTION_CORE_REMOTE, self.args.name\n            )\n\n        return ret\n\n\nclass CmdRemoteRemove(CmdConfig):\n    def _remove_default(self, config):\n        core = config.get(Config.SECTION_CORE, None)\n        if core is None:\n            return 0\n\n        default = core.get(Config.SECTION_CORE_REMOTE, None)\n        if default is None:\n            return 0\n\n        if default == self.args.name:\n            return self._unset(\n                Config.SECTION_CORE,\n                opt=Config.SECTION_CORE_REMOTE,\n                configobj=config,\n            )\n\n    def run(self):\n        section = Config.SECTION_REMOTE_FMT.format(self.args.name)\n        ret = self._unset(section)\n        if ret != 0:\n            return ret\n\n        for configobj in [\n            self.config._local_config,\n            self.config._repo_config,\n            self.config._global_config,\n            self.config._system_config,\n        ]:\n            self._remove_default(configobj)\n            self.config.save(configobj)\n            if configobj == self.configobj:\n                break\n\n        return 0\n\n\nclass CmdRemoteModify(CmdConfig):\n    def run(self):\n        section = Config.SECTION_REMOTE_FMT.format(self.args.name)\n        self.args.name = \"{}.{}\".format(section, self.args.option)\n        return super(CmdRemoteModify, self).run()\n\n\nclass CmdRemoteDefault(CmdConfig):\n    def run(self):\n        self.args.value = self.args.name\n        self.args.name = \"core.remote\"\n        return super(CmdRemoteDefault, self).run()\n\n\nclass CmdRemoteList(CmdConfig):\n    def run(self):\n        for section in self.configobj.keys():\n            r = re.match(Config.SECTION_REMOTE_REGEX, section)\n            if r:\n                name = r.group(\"name\")\n                url = self.configobj[section].get(\n                    Config.SECTION_REMOTE_URL, \"\"\n                )\n                logger.info(\"{}\\t{}\".format(name, url))\n        return 0\n\n\ndef add_parser(subparsers, parent_parser):\n    from dvc.command.config import parent_config_parser\n\n    REMOTE_HELP = \"Manage remote storage configuration.\"\n    remote_parser = subparsers.add_parser(\n        \"remote\",\n        parents=[parent_parser],\n        description=append_doc_link(REMOTE_HELP, \"remote\"),\n        help=REMOTE_HELP,\n        formatter_class=argparse.RawDescriptionHelpFormatter,\n    )\n\n    remote_subparsers = remote_parser.add_subparsers(\n        dest=\"cmd\",\n        help=\"Use dvc remote CMD --help for \" \"command-specific help.\",\n    )\n\n    fix_subparsers(remote_subparsers)\n\n    REMOTE_ADD_HELP = \"Add remote.\"\n    remote_add_parser = remote_subparsers.add_parser(\n        \"add\",\n        parents=[parent_config_parser, parent_parser],\n        description=append_doc_link(REMOTE_ADD_HELP, \"remote-add\"),\n        help=REMOTE_ADD_HELP,\n        formatter_class=argparse.RawDescriptionHelpFormatter,\n    )\n    remote_add_parser.add_argument(\"name\", help=\"Name.\")\n    remote_add_parser.add_argument(\n        \"url\",\n        help=\"URL. See full list of supported urls at \" \"man.dvc.org/remote\",\n    )\n    remote_add_parser.add_argument(\n        \"-d\",\n        \"--default\",\n        action=\"store_true\",\n        default=False,\n        help=\"Set as default remote.\",\n    )\n    remote_add_parser.set_defaults(func=CmdRemoteAdd)\n\n    REMOTE_DEFAULT_HELP = \"Set/unset default remote.\"\n    remote_default_parser = remote_subparsers.add_parser(\n        \"default\",\n        parents=[parent_config_parser, parent_parser],\n        description=append_doc_link(REMOTE_DEFAULT_HELP, \"remote-default\"),\n        help=REMOTE_DEFAULT_HELP,\n        formatter_class=argparse.RawDescriptionHelpFormatter,\n    )\n    remote_default_parser.add_argument(\n        \"name\", nargs=\"?\", help=\"Name of the remote.\"\n    )\n    remote_default_parser.add_argument(\n        \"-u\",\n        \"--unset\",\n        action=\"store_true\",\n        default=False,\n        help=\"Unset default remote.\",\n    )\n    remote_default_parser.set_defaults(func=CmdRemoteDefault)\n\n    REMOTE_REMOVE_HELP = \"Remove remote.\"\n    remote_remove_parser = remote_subparsers.add_parser(\n        \"remove\",\n        parents=[parent_config_parser, parent_parser],\n        description=append_doc_link(REMOTE_REMOVE_HELP, \"remote-remove\"),\n        help=REMOTE_REMOVE_HELP,\n        formatter_class=argparse.RawDescriptionHelpFormatter,\n    )\n    remote_remove_parser.add_argument(\"name\", help=\"Name\")\n    remote_remove_parser.set_defaults(func=CmdRemoteRemove)\n\n    REMOTE_MODIFY_HELP = \"Modify remote.\"\n    remote_modify_parser = remote_subparsers.add_parser(\n        \"modify\",\n        parents=[parent_config_parser, parent_parser],\n        description=append_doc_link(REMOTE_MODIFY_HELP, \"remote-modify\"),\n        help=REMOTE_MODIFY_HELP,\n        formatter_class=argparse.RawDescriptionHelpFormatter,\n    )\n    remote_modify_parser.add_argument(\"name\", help=\"Name.\")\n    remote_modify_parser.add_argument(\"option\", help=\"Option.\")\n    remote_modify_parser.add_argument(\"value\", nargs=\"?\", help=\"Value.\")\n    remote_modify_parser.add_argument(\n        \"-u\",\n        \"--unset\",\n        default=False,\n        action=\"store_true\",\n        help=\"Unset option.\",\n    )\n    remote_modify_parser.set_defaults(func=CmdRemoteModify)\n\n    REMOTE_LIST_HELP = \"List available remotes.\"\n    remote_list_parser = remote_subparsers.add_parser(\n        \"list\",\n        parents=[parent_config_parser, parent_parser],\n        description=append_doc_link(REMOTE_LIST_HELP, \"remote-list\"),\n        help=REMOTE_LIST_HELP,\n        formatter_class=argparse.RawDescriptionHelpFormatter,\n    )\n    remote_list_parser.set_defaults(func=CmdRemoteList)\n", "path": "dvc/command/remote.py"}], "after_files": [{"content": "from __future__ import unicode_literals\n\nimport argparse\nimport os\nimport re\n\nimport dvc.logger as logger\nfrom dvc.command.base import append_doc_link, fix_subparsers\nfrom dvc.command.config import CmdConfig\nfrom dvc.config import Config\n\n\nclass CmdRemoteAdd(CmdConfig):\n    @staticmethod\n    def resolve_path(path, config_file):\n        \"\"\"Resolve path relative to config file location.\n\n        Args:\n            path: Path to be resolved.\n            config_file: Path to config file, which `path` is specified\n                relative to.\n\n        Returns:\n            Path relative to the `config_file` location. If `path` is an\n            absolute path then it will be returned without change.\n\n        \"\"\"\n        if os.path.isabs(path):\n            return path\n        return os.path.relpath(path, os.path.dirname(config_file))\n\n    def run(self):\n        from dvc.remote import _get, RemoteLOCAL\n\n        remote = _get({Config.SECTION_REMOTE_URL: self.args.url})\n        if remote == RemoteLOCAL:\n            self.args.url = self.resolve_path(\n                self.args.url, self.configobj.filename\n            )\n\n        section = Config.SECTION_REMOTE_FMT.format(self.args.name)\n        if (section in self.configobj.keys()) and not self.args.force:\n            logger.error(\n                \"Remote with name {} already exists. \"\n                \"Use -f (--force) to overwrite remote \"\n                \"with new value\".format(self.args.name)\n            )\n            return 1\n\n        ret = self._set(section, Config.SECTION_REMOTE_URL, self.args.url)\n        if ret != 0:\n            return ret\n\n        if self.args.default:\n            msg = \"Setting '{}' as a default remote.\".format(self.args.name)\n            logger.info(msg)\n            ret = self._set(\n                Config.SECTION_CORE, Config.SECTION_CORE_REMOTE, self.args.name\n            )\n\n        return ret\n\n\nclass CmdRemoteRemove(CmdConfig):\n    def _remove_default(self, config):\n        core = config.get(Config.SECTION_CORE, None)\n        if core is None:\n            return 0\n\n        default = core.get(Config.SECTION_CORE_REMOTE, None)\n        if default is None:\n            return 0\n\n        if default == self.args.name:\n            return self._unset(\n                Config.SECTION_CORE,\n                opt=Config.SECTION_CORE_REMOTE,\n                configobj=config,\n            )\n\n    def run(self):\n        section = Config.SECTION_REMOTE_FMT.format(self.args.name)\n        ret = self._unset(section)\n        if ret != 0:\n            return ret\n\n        for configobj in [\n            self.config._local_config,\n            self.config._repo_config,\n            self.config._global_config,\n            self.config._system_config,\n        ]:\n            self._remove_default(configobj)\n            self.config.save(configobj)\n            if configobj == self.configobj:\n                break\n\n        return 0\n\n\nclass CmdRemoteModify(CmdConfig):\n    def run(self):\n        section = Config.SECTION_REMOTE_FMT.format(self.args.name)\n        self.args.name = \"{}.{}\".format(section, self.args.option)\n        return super(CmdRemoteModify, self).run()\n\n\nclass CmdRemoteDefault(CmdConfig):\n    def run(self):\n        self.args.value = self.args.name\n        self.args.name = \"core.remote\"\n        return super(CmdRemoteDefault, self).run()\n\n\nclass CmdRemoteList(CmdConfig):\n    def run(self):\n        for section in self.configobj.keys():\n            r = re.match(Config.SECTION_REMOTE_REGEX, section)\n            if r:\n                name = r.group(\"name\")\n                url = self.configobj[section].get(\n                    Config.SECTION_REMOTE_URL, \"\"\n                )\n                logger.info(\"{}\\t{}\".format(name, url))\n        return 0\n\n\ndef add_parser(subparsers, parent_parser):\n    from dvc.command.config import parent_config_parser\n\n    REMOTE_HELP = \"Manage remote storage configuration.\"\n    remote_parser = subparsers.add_parser(\n        \"remote\",\n        parents=[parent_parser],\n        description=append_doc_link(REMOTE_HELP, \"remote\"),\n        help=REMOTE_HELP,\n        formatter_class=argparse.RawDescriptionHelpFormatter,\n    )\n\n    remote_subparsers = remote_parser.add_subparsers(\n        dest=\"cmd\",\n        help=\"Use dvc remote CMD --help for \" \"command-specific help.\",\n    )\n\n    fix_subparsers(remote_subparsers)\n\n    REMOTE_ADD_HELP = \"Add remote.\"\n    remote_add_parser = remote_subparsers.add_parser(\n        \"add\",\n        parents=[parent_config_parser, parent_parser],\n        description=append_doc_link(REMOTE_ADD_HELP, \"remote-add\"),\n        help=REMOTE_ADD_HELP,\n        formatter_class=argparse.RawDescriptionHelpFormatter,\n    )\n    remote_add_parser.add_argument(\"name\", help=\"Name.\")\n    remote_add_parser.add_argument(\n        \"url\",\n        help=\"URL. See full list of supported urls at \" \"man.dvc.org/remote\",\n    )\n    remote_add_parser.add_argument(\n        \"-d\",\n        \"--default\",\n        action=\"store_true\",\n        default=False,\n        help=\"Set as default remote.\",\n    )\n    remote_add_parser.add_argument(\n        \"-f\",\n        \"--force\",\n        action=\"store_true\",\n        default=False,\n        help=\"Force overwriting existing configs\",\n    )\n    remote_add_parser.set_defaults(func=CmdRemoteAdd)\n\n    REMOTE_DEFAULT_HELP = \"Set/unset default remote.\"\n    remote_default_parser = remote_subparsers.add_parser(\n        \"default\",\n        parents=[parent_config_parser, parent_parser],\n        description=append_doc_link(REMOTE_DEFAULT_HELP, \"remote-default\"),\n        help=REMOTE_DEFAULT_HELP,\n        formatter_class=argparse.RawDescriptionHelpFormatter,\n    )\n    remote_default_parser.add_argument(\n        \"name\", nargs=\"?\", help=\"Name of the remote.\"\n    )\n    remote_default_parser.add_argument(\n        \"-u\",\n        \"--unset\",\n        action=\"store_true\",\n        default=False,\n        help=\"Unset default remote.\",\n    )\n    remote_default_parser.set_defaults(func=CmdRemoteDefault)\n\n    REMOTE_REMOVE_HELP = \"Remove remote.\"\n    remote_remove_parser = remote_subparsers.add_parser(\n        \"remove\",\n        parents=[parent_config_parser, parent_parser],\n        description=append_doc_link(REMOTE_REMOVE_HELP, \"remote-remove\"),\n        help=REMOTE_REMOVE_HELP,\n        formatter_class=argparse.RawDescriptionHelpFormatter,\n    )\n    remote_remove_parser.add_argument(\"name\", help=\"Name\")\n    remote_remove_parser.set_defaults(func=CmdRemoteRemove)\n\n    REMOTE_MODIFY_HELP = \"Modify remote.\"\n    remote_modify_parser = remote_subparsers.add_parser(\n        \"modify\",\n        parents=[parent_config_parser, parent_parser],\n        description=append_doc_link(REMOTE_MODIFY_HELP, \"remote-modify\"),\n        help=REMOTE_MODIFY_HELP,\n        formatter_class=argparse.RawDescriptionHelpFormatter,\n    )\n    remote_modify_parser.add_argument(\"name\", help=\"Name.\")\n    remote_modify_parser.add_argument(\"option\", help=\"Option.\")\n    remote_modify_parser.add_argument(\"value\", nargs=\"?\", help=\"Value.\")\n    remote_modify_parser.add_argument(\n        \"-u\",\n        \"--unset\",\n        default=False,\n        action=\"store_true\",\n        help=\"Unset option.\",\n    )\n    remote_modify_parser.set_defaults(func=CmdRemoteModify)\n\n    REMOTE_LIST_HELP = \"List available remotes.\"\n    remote_list_parser = remote_subparsers.add_parser(\n        \"list\",\n        parents=[parent_config_parser, parent_parser],\n        description=append_doc_link(REMOTE_LIST_HELP, \"remote-list\"),\n        help=REMOTE_LIST_HELP,\n        formatter_class=argparse.RawDescriptionHelpFormatter,\n    )\n    remote_list_parser.set_defaults(func=CmdRemoteList)\n", "path": "dvc/command/remote.py"}]}