Как работает контроль версий?

Как обычно работает управление версиями? он сохраняет файлы diff как след с хэшами для проверки тропы?

Ответ 1

Различные VCS используют разные подходы. Например, CVS создаст файл на сервере для каждого файла, который вы совершаете. Это по существу файл в формате RCS; CVS - это только оболочка вокруг RCS, которая запускает команды RCS по многим файлам в поддереве каталога (RCS может работать только с отдельными файлами).

Файл RCS содержит список изменений (номер версии, сообщение проверки и сколько было изменено). После этого появляется копия текущей версии HEAD. Остальные файлы - это различия между версиями (длинное объяснение).

Таким образом, CVS может быстро вернуть версию HEAD (которая чаще всего запрашивается), и она может вычислять другие версии.

CVS не делает никакой проверки; если один из ваших файлов поврежден, вам нужна резервная копия. Поскольку CVS основан на RCS, он не может каталоги версий и не может отслеживать переименования. CVS и RCS используют стандартную команду diff(1) для создания различий.

Subversion (SVN) работает аналогично, но добавляет управление версиями каталогов и переименований. Кроме того, SVN использует лучший алгоритм сравнения (xdelta), который дает меньший репозиторий.

Для объяснения, как работает Git, см. здесь.

Ответ 3

Darcs очень отличается, и IMHO более интуитивно понятен, чем другие SCM, даже распределенные. Там отличное руководство для начинающих о том, как это работает: Понимание Darcs.