3 ms·
I don't see why a reverse diff chain would necessarily require re-encoding all previous versions on every commit. A commit would be something like this: - Dif
by amalcon 18y ago
I don't see why a reverse diff chain would necessarily require re-encoding all previous versions on every commit. A commit would be something like this:
- Diff the new and current versions
- Place the new version and the diff in the repository, remove the current version
- Verify the integrity of the current version
which executes in time independent of the number of versions.
He might be referring to the zlib encoding, where if you always put the current version at the "beginning" of a single large, everything will need to be re-encoded. This is a limitation of zlib, not of encoding in general. Besides, you should be able to work around it (even using vanilla zlib) by keeping separate, uncompressed indices for the beginning of each diff, and then keeping the current version at the end of the file instead.