mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-11 07:18:28 +01:00
dvc.data: save and try loading raw dir objects
When staging a directory, always save a "raw dir object" to the odb. If the corresponding ".dir" object has not been added to the odb, `stage()` calls can load the tree from the raw dir object instead of rebuilding it by walking the directory. This can lead to significant speed improvements when calling `dvc status` for modified directories. Fixes #7390
This commit is contained in:
committed by
Ruslan Kuprieiev
parent
b3fb0dfdad
commit
7a795f79db
@@ -177,10 +177,13 @@ def test_commit_granular_dir(tmp_dir, dvc):
|
||||
|
||||
cache = tmp_dir / ".dvc" / "cache"
|
||||
|
||||
assert set(cache.glob("*/*")) == set()
|
||||
assert set(cache.glob("*/*")) == {
|
||||
cache / "1a" / "ca2c799df82929bbdd976557975546",
|
||||
}
|
||||
|
||||
dvc.commit(os.path.join("data", "foo"))
|
||||
assert set(cache.glob("*/*")) == {
|
||||
cache / "1a" / "ca2c799df82929bbdd976557975546",
|
||||
cache / "1a" / "ca2c799df82929bbdd976557975546.dir",
|
||||
cache / "ac" / "bd18db4cc2f85cedef654fccc4a4d8",
|
||||
}
|
||||
@@ -188,6 +191,8 @@ def test_commit_granular_dir(tmp_dir, dvc):
|
||||
|
||||
dvc.commit(os.path.join("data", "subdir"))
|
||||
assert set(cache.glob("*/*")) == {
|
||||
cache / "26" / "d6b64d96a660707412f523e8184b5f",
|
||||
cache / "1a" / "ca2c799df82929bbdd976557975546",
|
||||
cache / "1a" / "ca2c799df82929bbdd976557975546.dir",
|
||||
cache / "ac" / "bd18db4cc2f85cedef654fccc4a4d8",
|
||||
cache / "4c" / "e8d2a2cf314a52fa7f315ca37ca445",
|
||||
@@ -197,6 +202,8 @@ def test_commit_granular_dir(tmp_dir, dvc):
|
||||
|
||||
dvc.commit(os.path.join("data"))
|
||||
assert set(cache.glob("*/*")) == {
|
||||
cache / "26" / "d6b64d96a660707412f523e8184b5f",
|
||||
cache / "1a" / "ca2c799df82929bbdd976557975546",
|
||||
cache / "1a" / "ca2c799df82929bbdd976557975546.dir",
|
||||
cache / "ac" / "bd18db4cc2f85cedef654fccc4a4d8",
|
||||
cache / "4c" / "e8d2a2cf314a52fa7f315ca37ca445",
|
||||
|
||||
Reference in New Issue
Block a user