Ответ 1
Различные VCS используют разные подходы. Например, CVS создаст файл на сервере для каждого файла, который вы совершаете. Это по существу файл в формате RCS; CVS - это только оболочка вокруг RCS, которая запускает команды RCS по многим файлам в поддереве каталога (RCS может работать только с отдельными файлами).
Файл RCS содержит список изменений (номер версии, сообщение проверки и сколько было изменено). После этого появляется копия текущей версии HEAD. Остальные файлы - это различия между версиями (длинное объяснение).
Таким образом, CVS может быстро вернуть версию HEAD (которая чаще всего запрашивается), и она может вычислять другие версии.
CVS не делает никакой проверки; если один из ваших файлов поврежден, вам нужна резервная копия. Поскольку CVS основан на RCS, он не может каталоги версий и не может отслеживать переименования. CVS и RCS используют стандартную команду diff(1)
для создания различий.
Subversion (SVN) работает аналогично, но добавляет управление версиями каталогов и переименований. Кроме того, SVN использует лучший алгоритм сравнения (xdelta), который дает меньший репозиторий.