I think Pijul is a better contender for decentralized networks than git.
- Git takes a whole snapshot of workspace for each commit
- then it tries to find matching objects at the storage level and stores just the diffs to save space
- thus creates one compressed file which changes each time it’s recreated (
git gc
or autogc), resulting in a completely new file containing all the repository data, which can’t be efficiently stored (deduplication) on a content-addressable-network (immutable data)
- Pijul stores a patch for each commit
- then stores these patches as files at the storage level
- thus one additional commit is just one additional file => old patch files don’t change thus they can be efficiently stored on a content-addressable-network
tldr: git compresses all data to one file at the storage level, resulting in non-deduplicatable data. pijul works with compressed data (patches) at all levels, thus all patches can be stored as self-contained units allowing deduplication.