fix(diff): show in "Not in cache" if dir entry is missing (#10844)

This commit is contained in:
skshetry
2025-08-15 17:17:57 +00:00
committed by GitHub
parent 29386a0dbb
commit 6e223633e7
2 changed files with 16 additions and 2 deletions
+4
View File
@@ -45,6 +45,10 @@ def _diff(old, new, data_keys, with_missing=False):
with_renames=True,
meta_cmp_key=meta_cmp_key,
roots=data_keys,
# we need to get unknown and unchanged entries to tell whether
# the object is missing from the cache or not.
with_unknown=with_missing,
with_unchanged=with_missing,
):
if (change.old and change.old.isdir and not change.old.hash_info) or (
change.new and change.new.isdir and not change.new.hash_info
+12 -2
View File
@@ -265,12 +265,22 @@ def test_diff_no_cache(tmp_dir, scm, dvc):
remove(dvc.cache.local.path)
# invalidate_dir_info to force cache loading
dvc.cache.local._dir_info = {}
diff = dvc.diff("v1")
assert diff["added"] == []
assert diff["deleted"] == []
assert first(diff["modified"])["path"] == os.path.join("dir", "")
assert diff["renamed"] == []
assert diff["not in cache"] == [
{
"hash": "61d9c7f006e1ae7138fec5e574676ee2.dir",
"path": os.path.join("dir", ""),
}
]
diff = dvc.diff("v1", "v2")
assert diff["added"] == []
assert diff["deleted"] == []
assert diff["renamed"] == []
assert first(diff["modified"])["path"] == os.path.join("dir", "")
assert diff["not in cache"] == []