DEV Community

Discussion on: Revisiting the Pain: The World without Git

Collapse
 
mmi profile image
Georg Nikodym

You focus on the local vs remote, central vs distributed attributes of the various systems while missing an important piece.

In addition to lack of network awareness (because networking itself was in its infancy) RCS and SCCS are file only. You could have 1.45 of fileA and 1.64 of fileB and so on. There was no ability to snapshot the state of a source tree.

CVS was the first system that attempted to address this but it was still pretty cumbersome.

The idea to bundle a collection of file changes into a unit (that could be reproduced) didn't appear until SVN, Perforce, BitKeeper (there were others like arch and monotone but I've never used them so can't offer anything worthwhile) and later Mercurial and Git.

The "invention" of the changelist/changeset/commit was a super important development for anybody dealing with giant source trees. The obvious reason being that it allowed for better understanding of changes in a system. The less obvious reason, to most developers, was that it greatly reduced the amount of network traffic required to compare two trees -- effectively enabling the distributed architecture we take for granted today.