diff --git a/dvc/ignore.py b/dvc/ignore.py index 71569b38b3..bcdf814917 100644 --- a/dvc/ignore.py +++ b/dvc/ignore.py @@ -274,7 +274,7 @@ def _get_trie_pattern(self, dirname): def _is_ignored(self, path, is_dir=False): if self._outside_repo(path): - return True + return False dirname, basename = os.path.split(os.path.normpath(path)) ignore_pattern = self._get_trie_pattern(dirname) if ignore_pattern: @@ -296,6 +296,7 @@ def is_ignored_dir(self, path, ignore_subrepos=True): return self._is_ignored(path, True) def is_ignored_file(self, path): + path = os.path.abspath(path) return self._is_ignored(path, False) def _outside_repo(self, path): diff --git a/tests/func/test_ignore.py b/tests/func/test_ignore.py index 042329f79c..097dfe374a 100644 --- a/tests/func/test_ignore.py +++ b/tests/func/test_ignore.py @@ -158,10 +158,17 @@ def test_match_nested(tmp_dir, dvc): def test_ignore_external(tmp_dir, scm, dvc, tmp_path_factory): tmp_dir.gen(".dvcignore", "*.backup\ntmp") ext_dir = TmpDir(os.fspath(tmp_path_factory.mktemp("external_dir"))) - ext_dir.gen({"y.backup": "y", "tmp": "ext tmp"}) + ext_dir.gen({"y.backup": "y", "tmp": {"file": "ext tmp"}}) result = {relpath(f, ext_dir) for f in dvc.tree.walk_files(ext_dir)} - assert result == {"y.backup", "tmp"} + assert result == {"y.backup", os.path.join("tmp", "file")} + assert ( + dvc.tree.dvcignore.is_ignored_dir(os.fspath(ext_dir / "tmp")) is False + ) + assert ( + dvc.tree.dvcignore.is_ignored_file(os.fspath(ext_dir / "y.backup")) + is False + ) def test_ignore_subrepo(tmp_dir, scm, dvc):