Could anyone give me some idea to why git developers made a design decision to store contents of files (blobs), so when the content changes a new blob needs to be created?
I believe subversion stores revisions rather than contents, so when the content changes, it simply keeps track of the differences between the two. Couldn’t git have done it like this as well? What’s the benefit of storing contents rather than revisions?
I couldn’t find the answer with a quick google, but I believe it boils down to a simple “it doesn’t matter ’cause disk space is cheap”.
Storing revisions within a source code management tool is tricky. If you only ever store the difference between the previous revision and the current, you end up with two problems:
I believe that most modern VCS actually store the latest revision (for performance reasons) and differences, if used, are used to go back in time, not forwards.