4 ms·
I'll try to answer your question, but it's been a while since I last looked at it, so I might get some/most of this wrong - so don't shoot me: As far as I know
by watson 9y ago
I'll try to answer your question, but it's been a while since I last looked at it, so I might get some/most of this wrong - so don't shoot me:
As far as I know git isn't good at storing binary data. Git depends on line breaks to be able to diff and make change sets. If you store a binary file in git and make an update to it - even though that update only changed 1 byte, the entire new version of the file is stored again. Dat uses Rabin fingerprinting to intelligently slice binary files into chunks that are less likely to change. That make dat a lot more efficient at storing, versioning, and syncing videos, images, and other large binary files.
- icebraining 9y agoConceptually, git doesn't use change-sets, each commit is a snapshot of all the files in the current version. For storage and transmission efficiency, though, it can store and send them in packfiles, which use delta compression based on LibXDiff - which uses Rabin's fingerprint algorithm (as well as other algorithm by Joshua P. MacDonald) for binary files.