Как обычно работает управление версиями? он сохраняет файлы diff как след с хэшами для проверки тропы?
Как работает контроль версий?
Ответ 1
Различные VCS используют разные подходы. Например, CVS создаст файл на сервере для каждого файла, который вы совершаете. Это по существу файл в формате RCS; CVS - это только оболочка вокруг RCS, которая запускает команды RCS по многим файлам в поддереве каталога (RCS может работать только с отдельными файлами).
Файл RCS содержит список изменений (номер версии, сообщение проверки и сколько было изменено). После этого появляется копия текущей версии HEAD. Остальные файлы - это различия между версиями (длинное объяснение).
Таким образом, CVS может быстро вернуть версию HEAD (которая чаще всего запрашивается), и она может вычислять другие версии.
CVS не делает никакой проверки; если один из ваших файлов поврежден, вам нужна резервная копия. Поскольку CVS основан на RCS, он не может каталоги версий и не может отслеживать переименования. CVS и RCS используют стандартную команду diff(1)
для создания различий.
Subversion (SVN) работает аналогично, но добавляет управление версиями каталогов и переименований. Кроме того, SVN использует лучший алгоритм сравнения (xdelta), который дает меньший репозиторий.
Ответ 2
Посмотрите Серия блога Эрика Синкса по контролю версий.
Кроме того, Джоэл Спольский написал Hg Init: учебник по Mercurial, который, наконец, заставил меня "получить", что такое распределенный контроль источника.
Существует несколько способов скинуть кошку...
Ответ 3
Darcs очень отличается, и IMHO более интуитивно понятен, чем другие SCM, даже распределенные. Там отличное руководство для начинающих о том, как это работает: Понимание Darcs.