yes that is also what i expected - but that’s not what people seem to think about it - i specifically asked if it was viewed as a entire tree snap-shot (like backup/restore) and the answer was yes.
@happybeing - would you be ok if it was like what fraser is saying ? (It’s not like a conventional snapshot tree backup/restore opreration - would you still prefer it ?)
@Fraser: Another point - with file only versioning, only one thing would grow - that particular file’s metadata vec.
So root/a/file-v0
then root/a/file-v1
would imply when you fetched SD::data(a)
you would have fetched:
struct Dir {
sub_dir: Vec<DirMetadata>,
files: Vec<File>,
}
// where roughly
enum File {
Versioned(Vec<FileMetadata>),
Unversioned(FileMetadata),
}
So you can see, if a
had 50 KiB of data (i.e. if sizeof(Dir
-for-a
) == 50 KiB) then new version of file would only cause a slight increment in size (previous size + size of new file’s metadata). Say the increase is 1 KiB. So now total size is 51 KiB. Assume next time it would be 52 KiB. But in dir versioning you would replicate the entire 50 KiB (as SD::data(a)
is now SD::data(Vec<a>)
) => new SD
size ~ 101 KiB and probably kicked out of the SD. Next time 153 KiB etc. So in 3 updates for a file you would have reached 52 KiB in the file only versioning but 153 KiB in dir-versioning.