internlm/SWE-Fixer-Train-110K huggingface dataset:
Repository: iterative/dvc

Issue:
exp show --sort-by: not working
# Bug Report

## Description

`dvc exp show --sort-by` doesn't seem to do any sorting.

### Reproduce

```
$ dvc init
$ echo "p: 0" > params.yaml
$ dvc stage add -p p -n test "echo test"
$ dvc exp run
$ dvc exp run -S p=2
$ dvc exp run -S p=1
$ dvc exp show --sort-by p
┏━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━┓
┃ Experiment              ┃ Created  ┃ p ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━┩
│ workspace               │ -        │ 1 │
│ main                    │ 04:38 PM │ - │
│ ├── fad0a94 [exp-89140] │ 04:41 PM │ 1 │
│ ├── 60fcda8 [exp-43537] │ 04:41 PM │ 2 │
│ └── a7e9aaf [exp-4f89e] │ 04:41 PM │ 0 │
└─────────────────────────┴──────────┴───┘
```

### Expected

Sorted table rows.

### Environment information

```
$ dvc doctor
DVC version: 2.7.4+e29543
---------------------------------
Platform: Python 3.9.5 on macOS-11.5.2-arm64-arm-64bit
Supports:
        s3 (s3fs = 2021.8.0, boto3 = 1.17.5)
Cache types: <https://error.dvc.org/no-dvc-cache>
Caches: local
Remotes: local
Workspace directory: apfs on /dev/disk3s1s1
Repo: dvc, git
```


Discussion:

Resolving patch:
diff --git a/dvc/command/experiments.py b/dvc/command/experiments.py
--- a/dvc/command/experiments.py
+++ b/dvc/command/experiments.py
@@ -258,11 +258,12 @@ def _sort_column(sort_by, metric_names, param_names):
 def _sort_exp(experiments, sort_path, sort_name, typ, reverse):
     def _sort(item):
         rev, exp = item
-        tip = exp.get("checkpoint_tip")
+        exp_data = exp.get("data", {})
+        tip = exp_data.get("checkpoint_tip")
         if tip and tip != rev:
             # Sort checkpoint experiments by tip commit
             return _sort((tip, experiments[tip]))
-        data = exp.get(typ, {}).get(sort_path, {})
+        data = exp_data.get(typ, {}).get(sort_path, {}).get("data", {})
         val = flatten(data).get(sort_name)
         return val is None, val
 


Test patch:
Repository: iterative/dvc

Issue:
machine status: include `instance_type` and `instance_gpu ` in the output.
One other thing I've noticed, we should be including `instance_type` (instance CPU count/size) and `instance_gpu ` in the default status output (doesn't have to be in this PR though)

_Originally posted by @pmrowla in https://github.com/iterative/dvc/issues/6855#issuecomment-950630793_


Discussion:

Resolving patch:
diff --git a/dvc/command/machine.py b/dvc/command/machine.py
--- a/dvc/command/machine.py
+++ b/dvc/command/machine.py
@@ -193,7 +193,14 @@ def run(self):
 
 
 class CmdMachineStatus(CmdBase):
-    SHOWN_FIELD = ["name", "cloud", "instance_hdd_size", "instance_ip"]
+    SHOWN_FIELD = [
+        "name",
+        "cloud",
+        "instance_ip",
+        "instance_type",
+        "instance_hdd_size",
+        "instance_gpu",
+    ]
 
     def run(self):
         if self.repo.machine is None:


Test patch:
Repository: iterative/dvc

Issue:
exp init: --explicit not working
# Bug Report

## Description

`dvc exp init --explicit` fails.

### Reproduce

In a fresh dvc repo:

```
$ dvc exp init -v --explicit echo foo
2021-11-02 12:16:19,313 ERROR: unexpected error - 'live'
------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/dave/Code/dvc/dvc/main.py", line 55, in main
    ret = cmd.do_run()
  File "/Users/dave/Code/dvc/dvc/command/base.py", line 45, in do_run
    return self.run()
  File "/Users/dave/Code/dvc/dvc/command/experiments.py", line 841, in run
    initialized_stage = init(
  File "/Users/dave/Code/dvc/dvc/repo/experiments/init.py", line 221, in init
    defaults.pop("live")  # suppress live otherwise
KeyError: 'live'
------------------------------------------------------------
2021-11-02 12:16:19,405 DEBUG: Version info for developers:
DVC version: 2.8.3.dev13+g5690015e
---------------------------------
Platform: Python 3.9.5 on macOS-12.0.1-arm64-arm-64bit
Supports:
        webhdfs (fsspec = 2021.9.0),
        http (aiohttp = 3.7.4.post0, aiohttp-retry = 2.4.5),
        https (aiohttp = 3.7.4.post0, aiohttp-retry = 2.4.5),
        s3 (s3fs = 2021.8.0, boto3 = 1.17.5)
Cache types: <https://error.dvc.org/no-dvc-cache>
Caches: local
Remotes: local
Workspace directory: apfs on /dev/disk3s1s1
Repo: dvc, git

Having any troubles? Hit us up at https://dvc.org/support, we are always happy to help!
2021-11-02 12:16:19,406 DEBUG: Analytics is disabled.
```

### Environment information

DVC version: 2.8.3.dev13+g5690015e


Discussion:

Resolving patch:
diff --git a/dvc/repo/experiments/init.py b/dvc/repo/experiments/init.py
--- a/dvc/repo/experiments/init.py
+++ b/dvc/repo/experiments/init.py
@@ -240,10 +240,10 @@ def init(
             # suppress `metrics`/`params` if live is selected, unless
             # it is also provided via overrides/cli.
             # This makes output to be a checkpoint as well.
-            defaults.pop("metrics")
-            defaults.pop("params")
+            defaults.pop("metrics", None)
+            defaults.pop("params", None)
         else:
-            defaults.pop("live")  # suppress live otherwise
+            defaults.pop("live", None)  # suppress live otherwise
 
     context: Dict[str, str] = {**defaults, **overrides}
     assert "cmd" in context


Test patch:
Repository: iterative/dvc

Issue:
tests: opens browser with plots when running tests
See https://github.com/iterative/dvc/pull/6913#discussion_r754003524.

Can be reproduced with `pytest tests/func/test_live.py`.


Discussion:

Resolving patch:
diff --git a/dvc/repo/live.py b/dvc/repo/live.py
--- a/dvc/repo/live.py
+++ b/dvc/repo/live.py
@@ -1,5 +1,4 @@
 import logging
-import webbrowser
 from pathlib import Path
 from platform import uname
 from typing import TYPE_CHECKING, List, Optional
@@ -14,7 +13,12 @@
     from dvc.output import Output
     from dvc.repo import Repo
 
-webbrowser_open = once_per_args(webbrowser.open)
+
+@once_per_args
+def webbrowser_open(url: str) -> int:
+    import webbrowser
+
+    return webbrowser.open(url)
 
 
 def create_summary(out):


Test patch:
diff --git a/tests/conftest.py b/tests/conftest.py
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -178,3 +178,8 @@ def custom_template(tmp_dir, dvc):
 
 
 scriptify_fixture = pytest.fixture(lambda: scriptify, name="scriptify")
+
+
+@pytest.fixture(autouse=True)
+def mocked_webbrowser_open(mocker):
+    mocker.patch("webbrowser.open")
Repository: iterative/dvc

Issue:
exp show: alternate background colors slightly to make navigation easier
It would be way easier to navigate in the table if we had different background for items nearby, e.g. VSCode:

<img width="1051" alt="Screen Shot 2021-12-10 at 7 12 51 PM" src="https://user-images.githubusercontent.com/3659196/145661852-9a4dfd12-1690-487f-9f9e-4996e6ac0f88.png">




Discussion:

Resolving patch:
diff --git a/dvc/command/experiments/show.py b/dvc/command/experiments/show.py
--- a/dvc/command/experiments/show.py
+++ b/dvc/command/experiments/show.py
@@ -373,7 +373,7 @@ def prepare_exp_id(kwargs) -> "RichText":
 
 
 def baseline_styler(typ):
-    return {"style": "bold"} if typ == "baseline" else {}
+    return {"style": "bold"} if typ == "baseline" else {"style": "default"}
 
 
 def show_experiments(
@@ -437,6 +437,9 @@ def show_experiments(
             td.drop(col)
 
     row_styles = lmap(baseline_styler, td.column("typ"))
+    for n, row_style in enumerate(row_styles):
+        if n % 2 != 0:
+            row_style["style"] += " on grey23"
 
     if not csv:
         merge_headers = ["Experiment", "rev", "typ", "parent"]
@@ -471,7 +474,7 @@ def show_experiments(
 
     td.render(
         pager=pager,
-        borders=True,
+        borders="horizontals",
         rich_table=True,
         header_styles=styles,
         row_styles=row_styles,
diff --git a/dvc/ui/table.py b/dvc/ui/table.py
--- a/dvc/ui/table.py
+++ b/dvc/ui/table.py
@@ -91,6 +91,7 @@ def rich_table(
         False: None,
         "simple": box.SIMPLE,
         "minimal": box.MINIMAL,
+        "horizontals": box.HORIZONTALS,
     }
 
     table = Table(box=border_style[borders])


Test patch:
diff --git a/tests/func/experiments/test_show.py b/tests/func/experiments/test_show.py
--- a/tests/func/experiments/test_show.py
+++ b/tests/func/experiments/test_show.py
@@ -274,7 +274,6 @@ def test_show_filter(
     from dvc.ui import ui
 
     capsys.readouterr()
-    div = "│" if os.name == "nt" else "┃"
 
     tmp_dir.gen("copy.py", COPY_SCRIPT)
     params_file = tmp_dir / "params.yaml"
@@ -321,11 +320,11 @@ def test_show_filter(
     cap = capsys.readouterr()
 
     for i in included:
-        assert f"{div} params.yaml:{i} {div}" in cap.out
-        assert f"{div} metrics.yaml:{i} {div}" in cap.out
+        assert f"params.yaml:{i}" in cap.out
+        assert f"metrics.yaml:{i}" in cap.out
     for e in excluded:
-        assert f"{div} params.yaml:{e} {div}" not in cap.out
-        assert f"{div} metrics.yaml:{e} {div}" not in cap.out
+        assert f"params.yaml:{e}" not in cap.out
+        assert f"metrics.yaml:{e}" not in cap.out
 
 
 def test_show_multiple_commits(tmp_dir, scm, dvc, exp_stage):
Repository: iterative/dvc

Issue:
odb: index pickle version should be explicit
Currently we don't specify a pickle version when we use `diskcache` in the ODB/remote index, so we will potentially run into the same problem as: https://github.com/iterative/dvc/issues/5563

discord context: https://discord.com/channels/485586884165107732/485596304961962003/927613942908465162


Discussion:
We do specify them here @pmrowla.
https://github.com/iterative/dvc/blob/0a4958bafd8797e5fe4a9c9fa189e857111facd6/dvc/state.py#L62
Right, we specify the protocol version for state (md5 and links) but not for index
https://github.com/iterative/dvc/blob/0a4958bafd8797e5fe4a9c9fa189e857111facd6/dvc/objects/db/index.py#L99

Resolving patch:
diff --git a/dvc/objects/db/index.py b/dvc/objects/db/index.py
--- a/dvc/objects/db/index.py
+++ b/dvc/objects/db/index.py
@@ -88,7 +88,7 @@ def __init__(
         tmp_dir: "StrPath",
         name: str,
     ):  # pylint: disable=super-init-not-called
-        from diskcache import Index
+        from diskcache import Cache, Index
 
         from dvc.fs.local import LocalFileSystem
         from dvc.utils.fs import makedirs
@@ -96,7 +96,13 @@ def __init__(
         self.index_dir = os.path.join(tmp_dir, self.INDEX_DIR, name)
         makedirs(self.index_dir, exist_ok=True)
         self.fs = LocalFileSystem()
-        self.index = Index(self.index_dir)
+        self.index = Index.fromcache(
+            Cache(
+                self.index_dir,
+                disk_pickle_protocol=4,
+                eviction_policy="none",
+            )
+        )
 
     def __iter__(self):
         return iter(self.index)


Test patch:
Repository: iterative/dvc

Issue:
'None' does not contain DVC directory
```console
cd "$(mktemp -d)"
dvc add foo  # or any other command
```



Discussion:
@skshetry Are preparing a PR for this? I'm not clear what the issue or expected behavior is.
This is a regression from https://github.com/iterative/dvc/pull/7214 , most likely. The expected behaviour is to complain that you are not insde of the dvc repository right now, so smth like:

```
you are not inside of a DVC repository
```

Resolving patch:
diff --git a/dvc/repo/__init__.py b/dvc/repo/__init__.py
--- a/dvc/repo/__init__.py
+++ b/dvc/repo/__init__.py
@@ -314,8 +314,8 @@ def __repr__(self):
     def find_root(cls, root=None, fs=None) -> str:
         from dvc.fs.local import LocalFileSystem, localfs
 
-        root_dir = os.path.realpath(root or os.curdir)
-        _fs = fs
+        root = root or os.curdir
+        root_dir = os.path.realpath(root)
         fs = fs or localfs
 
         if not fs.isdir(root_dir):
@@ -332,13 +332,11 @@ def find_root(cls, root=None, fs=None) -> str:
                 break
             root_dir = parent
 
-        if _fs:
-            msg = f"'{root}' does not contain DVC directory"
-        else:
-            msg = (
-                "you are not inside of a DVC repository "
-                f"(checked up to mount point '{root_dir}')"
-            )
+        msg = "you are not inside of a DVC repository"
+
+        if isinstance(fs, LocalFileSystem):
+            msg = f"{msg} (checked up to mount point '{root_dir}')"
+
         raise NotDvcRepoError(msg)
 
     @classmethod


Test patch:
Repository: iterative/dvc

Issue:
`exp show`: Sort `deps` columns
@daavoo It looks like the data columns are in a random order and it sometimes changes on repeated calls to `exp show`. Can we sort in alphabetical order or some other predictable way that will make sense to users?

_Originally posted by @dberenbaum in https://github.com/iterative/dvc/issues/7089#issuecomment-1022544064_


Discussion:

Resolving patch:
diff --git a/dvc/commands/experiments/show.py b/dvc/commands/experiments/show.py
--- a/dvc/commands/experiments/show.py
+++ b/dvc/commands/experiments/show.py
@@ -49,7 +49,7 @@ def _collect_names(all_experiments, **kwargs):
             for dep_name in exp.get("deps", {}):
                 deps_names.add(dep_name)
 
-    return metric_names, param_names, deps_names
+    return metric_names, param_names, sorted(deps_names)
 
 
 experiment_types = {


Test patch:
diff --git a/tests/func/experiments/test_show.py b/tests/func/experiments/test_show.py
--- a/tests/func/experiments/test_show.py
+++ b/tests/func/experiments/test_show.py
@@ -660,3 +660,21 @@ def test_show_outs(tmp_dir, dvc, scm):
             "nfiles": None,
         }
     }
+
+
+def test_show_sorted_deps(tmp_dir, dvc, scm, capsys):
+    tmp_dir.gen("a", "a")
+    tmp_dir.gen("b", "b")
+    tmp_dir.gen("c", "c")
+    tmp_dir.gen("z", "z")
+
+    dvc.run(
+        cmd="echo foo",
+        name="deps",
+        deps=["a", "b", "z", "c"],
+    )
+
+    capsys.readouterr()
+    assert main(["exp", "show", "--csv"]) == 0
+    cap = capsys.readouterr()
+    assert "a,b,c,z" in cap.out
Repository: iterative/dvc

Issue:
`dvc destroy` leaves `.dvcignore` behind
The title is pretty self-explanatory but when invoking the `dvc destroy` command, the `.dvcignore` file is left behind. Is this behaviour intentional?

## Steps to reproduce

```sh
$ dvc init
$ echo foo > foo
$ dvc add foo
$ ls -a
.dvc       .dvcignore .git       .gitignore foo        foo.dvc

$ dvc destroy
This will destroy all information about your pipelines, all data files...
Are you sure you want to continue?
yes

$ ls -a
.dvcignore .git       .gitignore foo
```

## Version

```sh
$ dvc --version
2.9.3

$ sw_vers
ProductName:	macOS
ProductVersion:	12.2
BuildVersion:	21D49
```


Discussion:
Thank you for reporting this Sebastian. This one is the documentation repository. I'm moving this to the DVC repository for the core team to directly resolve it. 
.dvcignore would not be created by a DVC command. You must have created that file @VildMedPap , thus `dvc destroy` lets it be. See https://dvc.org/doc/user-guide/project-structure/dvcignore-files for more info. Does that answer your question?
Are you sure about that? Please see the attached gif.

I have installed `dvc` through brew as stated in the [documentation](https://dvc.org/doc/install/macos), version `2.9.3`.

![dvc-init](https://user-images.githubusercontent.com/23236622/152838506-a0f72d8a-49c4-4a77-a7f6-5bf4e7d00948.gif)
Interesting. Should've tested before reply but I was away form my regular environment. Let's see if there's a reason for this behavior, waiting for @iterative/dvc team to assess. Thanks
p.s. since it looks like .dvcignore creation is now part of `dvc init`, we should update https://dvc.org/doc/user-guide/project-structure/dvcignore-files which currently states users need to create that file. Maybe https://dvc.org/doc/command-reference/init too.

Resolving patch:
diff --git a/dvc/ignore.py b/dvc/ignore.py
--- a/dvc/ignore.py
+++ b/dvc/ignore.py
@@ -399,3 +399,10 @@ def init(path):
         )
 
     return dvcignore
+
+
+def destroy(path):
+    from dvc.utils.fs import remove
+
+    dvcignore = os.path.join(path, DvcIgnore.DVCIGNORE_FILE)
+    remove(dvcignore)
diff --git a/dvc/repo/destroy.py b/dvc/repo/destroy.py
--- a/dvc/repo/destroy.py
+++ b/dvc/repo/destroy.py
@@ -1,3 +1,4 @@
+from dvc.ignore import destroy as destroy_dvcignore
 from dvc.utils.fs import remove
 
 from . import locked
@@ -15,4 +16,5 @@ def _destroy_stages(repo):
 def destroy(repo):
     _destroy_stages(repo)
     repo.close()
+    destroy_dvcignore(repo.root_dir)
     remove(repo.dvc_dir)


Test patch:
diff --git a/tests/func/test_repo.py b/tests/func/test_repo.py
--- a/tests/func/test_repo.py
+++ b/tests/func/test_repo.py
@@ -19,6 +19,7 @@ def test_destroy(tmp_dir, dvc, run_copy):
     # Remove all the files related to DVC
     for path in [
         ".dvc",
+        ".dvcignore",
         "file.dvc",
         "file2.dvc",
         "dir.dvc",
Repository: iterative/dvc

Issue:
list: Invocation without path yields no output
# Bug Report

## Description

When invoking `dvc list` without a path argument, no output is returned. This only appears on the main branch.

### Reproduce

`dvc list https://github.com/iterative/dataset-registry` takes a very long time and yields no output on the main branch.

### Expected

There should be the same as on the most recent release
```
.gitignore
README.md
blog
dvc-course
fashion-mnist
get-started
images
mnist
tutorials
use-cases
```

### Environment information

```console
$ dvc doctor
DVC version: 2.9.4.dev107+g9b5ccb75
---------------------------------
Platform: Python 3.7.9 on Darwin-20.6.0-x86_64-i386-64bit
Supports:
	azure (adlfs = 2022.2.0, knack = 0.9.0, azure-identity = 1.7.1),
	gdrive (pydrive2 = 1.10.0),
	gs (gcsfs = 2022.1.0),
	hdfs (fsspec = 2022.1.0, pyarrow = 7.0.0),
	webhdfs (fsspec = 2022.1.0),
	http (aiohttp = 3.8.1, aiohttp-retry = 2.4.6),
	https (aiohttp = 3.8.1, aiohttp-retry = 2.4.6),
	ssh (sshfs = 2021.11.2),
	oss (ossfs = 2021.8.0),
	webdav (webdav4 = 0.9.4),
	webdavs (webdav4 = 0.9.4)
Cache types: <https://error.dvc.org/no-dvc-cache>
Caches: local
Remotes: https
Workspace directory: apfs on /dev/disk1s1s1
Repo: dvc, git
```

**Additional Information (if any):**

This appears to have been introduced in the commit [dvcfs: detach from pipeline outputs](https://github.com/iterative/dvc/commit/cb584c6a53a4f3b5157de8715cf82c55de334c3b)


Discussion:

Resolving patch:
diff --git a/dvc/fs/dvc.py b/dvc/fs/dvc.py
--- a/dvc/fs/dvc.py
+++ b/dvc/fs/dvc.py
@@ -44,7 +44,7 @@ def _get_key(self, path):
 
         fs_key = "repo"
         key = self.path.parts(path)
-        if key == (".",):
+        if key == (".",) or key == ("",):
             key = ()
 
         return (fs_key, *key)


Test patch:
diff --git a/tests/unit/fs/test_dvc.py b/tests/unit/fs/test_dvc.py
--- a/tests/unit/fs/test_dvc.py
+++ b/tests/unit/fs/test_dvc.py
@@ -10,6 +10,20 @@
 from dvc.utils.fs import remove
 
 
+@pytest.mark.parametrize(
+    "path, key",
+    [
+        ("", ("repo",)),
+        (".", ("repo",)),
+        ("foo", ("repo", "foo")),
+        (os.path.join("dir", "foo"), ("repo", "dir", "foo")),
+    ],
+)
+def test_get_key(tmp_dir, dvc, path, key):
+    fs = DvcFileSystem(repo=dvc)
+    assert fs._get_key(path) == key
+
+
 def test_exists(tmp_dir, dvc):
     tmp_dir.gen("foo", "foo")
     dvc.add("foo")
Repository: iterative/dvc

Issue:
Adding hooks with pre-commit tool not working.
# Bug Report

## install: using pre-commit to configure the DVC hooks returns an error 

## Description

After configuring dvc hooks alongside pre-commit the following error is reported "error: pathspec 'master' did not match any file(s) known to git" when trying to commit the changes.

### Reproduce

Run
>  $ pre-commit install --hook-type pre-push --hook-type post-checkout --hook-type pre-commit

followed by

> $ dvc install --use-pre-commit-tool

then add changes and run
> git commit

After a while the command will fail with the previously mentioned error.


### Expected

Having all hooks configured on the original repo and being able to commit the changes.


### Environment information

DVC version: 2.9.3 (pip)
---------------------------------
Platform: Python 3.10.2 on Linux-5.16.12-arch1-1-x86_64-with-glibc2.35
Supports:
        hdfs (fsspec = 2022.1.0, pyarrow = 7.0.0),
        webhdfs (fsspec = 2022.1.0),
        http (aiohttp = 3.8.1, aiohttp-retry = 2.4.6),
        https (aiohttp = 3.8.1, aiohttp-retry = 2.4.6),
        ssh (sshfs = 2021.11.2)
Cache types: hardlink, symlink
Cache directory: ext4 on /dev/sda3
Caches: local
Remotes: ssh, local
Workspace directory: ext4 on /dev/sda3
Repo: dvc, git


<!--
This is required to ensure that we can reproduce the bug.
-->

**Output of `dvc doctor`:**

```console
$ dvc doctor
```

**Additional Information (if any):**

<!--
Please check https://github.com/iterative/dvc/wiki/Debugging-DVC on ways to gather more information regarding the issue.

If applicable, please also provide a `--verbose` output of the command, eg: `dvc add --verbose`.
If the issue is regarding the performance, please attach the profiling information and the benchmark comparisons.
-->



Discussion:

Resolving patch:
diff --git a/dvc/repo/install.py b/dvc/repo/install.py
--- a/dvc/repo/install.py
+++ b/dvc/repo/install.py
@@ -17,7 +17,7 @@ def pre_commit_install(scm: "Git") -> None:
     with modify_yaml(config_path) as config:
         entry = {
             "repo": "https://github.com/iterative/dvc",
-            "rev": "master",
+            "rev": "main",
             "hooks": [
                 {
                     "id": "dvc-pre-commit",


Test patch:
Repository: iterative/dvc

Issue:
exp: remove mentions of resume
There are outdated mentions of `dvc exp resume` in the help text:


```
$ dvc exp run -n exp-e44da
Modified checkpoint experiment based on '76f47c1' will be created
WARNING: Ignoring option '--name exp-e44da' for resumed experiment. Existing experiment name willbe preserved instead.
'bar.dvc' didn't change, skipping
Running stage 'foo':
> python checkpoint.py
Updating lock file 'dvc.lock'
ERROR: Error running 'checkpoint' task, 'stage: 'foo'' will be aborted - Reproduced checkpoint experiment conflicts with existing experiment 'refs/exps/0f/d92c2c0ff17c923a79b4b0b96e54fe4b73a8cf/exp-e44da'. To restart (and overwrite) the existing experiment run:

        dvc exp run -f ...

To resume the existing experiment, run:

        dvc exp resume refs/exps/0f/d92c2c0ff17c923a79b4b0b96e54fe4b73a8cf/exp-e44da

```


Discussion:

Resolving patch:
diff --git a/dvc/commands/experiments/run.py b/dvc/commands/experiments/run.py
--- a/dvc/commands/experiments/run.py
+++ b/dvc/commands/experiments/run.py
@@ -81,7 +81,7 @@ def add_parser(experiments_subparsers, parent_parser):
 
 
 def _add_run_common(parser):
-    """Add common args for 'exp run' and 'exp resume'."""
+    """Add common args for 'exp run'."""
     # inherit arguments from `dvc repro`
     add_repro_arguments(parser)
     parser.add_argument(
diff --git a/dvc/repo/experiments/base.py b/dvc/repo/experiments/base.py
--- a/dvc/repo/experiments/base.py
+++ b/dvc/repo/experiments/base.py
@@ -54,7 +54,8 @@ def __init__(self, name: str):
             "experiment run:\n\n"
             "\tdvc exp run -f ...\n\n"
             "To resume the existing experiment, run:\n\n"
-            f"\tdvc exp resume {name}\n"
+            f"\tdvc exp apply {name}\n"
+            f"\tdvc exp run\n"
         )
         super().__init__(msg)
         self.name = name
diff --git a/dvc/repo/reproduce.py b/dvc/repo/reproduce.py
--- a/dvc/repo/reproduce.py
+++ b/dvc/repo/reproduce.py
@@ -28,8 +28,7 @@ def _run_callback(repro_callback):
         else:
             raise DvcException(
                 "Checkpoint stages are not supported in 'dvc repro'. "
-                "Checkpoint stages must be reproduced with 'dvc exp run' "
-                "or 'dvc exp resume'."
+                "Checkpoint stages must be reproduced with 'dvc exp run'. "
             )
 
     if stage.frozen and not stage.is_import:


Test patch: