And SCCS came. He made RCS, CVS, SVN SCCS and his children keep track of versions and revisions They save all the revisions, by storing diffs The new ideas of "checkout" and "commit" appear Programmers can use symbolic names («tags») The tools automatically generate version numbers (e.g.: 1.432) Every commit is augmented by a log message CVS, quite widespread, is mainly just RCS over the network Its own files live in a centralized repository Several uses can concurrently access the repository to read or write The network protocol is simple Conflicts are handled, though with some limitation What's wrong with CVS: Revisions are only maintained within each individual file If you rename a file you loose its history If you split or merge files, you loose their history Committing several files is not an atomic operation