diff --git a/dvc/repo/data.py b/dvc/repo/data.py index d77d2fedf..530a261c3 100644 --- a/dvc/repo/data.py +++ b/dvc/repo/data.py @@ -279,9 +279,7 @@ def _transform_git_paths_to_dvc(repo: "Repo", files: Iterable[str]): def status(repo: "Repo", untracked_files: str = "no", **kwargs: Any) -> Status: - from scmrepo.exceptions import SCMError - - from dvc.scm import NoSCMError + from dvc.scm import NoSCMError, SCMError head = kwargs.pop("head", "HEAD") uncommitted_diff = _diff_index_to_wtree(repo, **kwargs) diff --git a/dvc/scm.py b/dvc/scm.py index 2374506f0..b64413e9e 100644 --- a/dvc/scm.py +++ b/dvc/scm.py @@ -160,7 +160,7 @@ def resolve_rev(scm: "Git", rev: str) -> str: except InternalRevError as exc: # `scm` will only resolve git branch and tag names, # if rev is not a sha it may be an abbreviated experiment name - if not rev.startswith("refs/"): + if not (rev == "HEAD" or rev.startswith("refs/")): from dvc.repo.experiments.utils import ( AmbiguousExpRefInfo, resolve_name, diff --git a/tests/unit/test_scm.py b/tests/unit/test_scm.py new file mode 100644 index 000000000..5ed73734c --- /dev/null +++ b/tests/unit/test_scm.py @@ -0,0 +1,9 @@ +import pytest + +from dvc.exceptions import DvcException +from dvc.scm import resolve_rev + + +def test_resolve_rev_empty_git_repo(scm): + with pytest.raises(DvcException): + resolve_rev(scm, "HEAD")