В hg clone, в чем разница между "добавлением наборов изменений", "добавлением манифестов" и "добавлением изменений в файл"?
Из документации Mercurial:
Манифест - это файл, описывающий содержимое хранилища с определенным идентификатором набора изменений https://www.mercurial-scm.org/wiki/Manifest
При клонировании репозитория Mercurial я вижу строки вывода:
adding changesets
adding manifests
adding file changes
Я не понимаю разницу между этими вещами. Я думал, что понял, что такое набор изменений, но я не знаю, как он будет отличаться от набора "изменений файла". И на основании приведенного выше описания манифест звучит как одно и то же. Так в чем же разница между всеми этими?
1 ответ
Mercurial делит информацию, которую нужно отслеживать в системе управления версиями, на несколько уровней:
- Наборы изменений - метаданные о каждой ревизии. Кто (автор), когда (дата и время), почему (текст резюме) и что (затронутые имена файлов) и т. Д. Хранятся здесь.
- Манифесты - каждый манифест перечисляет ревизии файлов для файлов данной ревизии. Это похоже на таблицу ссылок в базе данных; содержимое файла не содержится, только какая версия данного файла является частью этой ревизии.
- Файл изменяется - эти файлы хранят фактические данные файла. Неэффективно хранить каждую когда-либо созданную версию данного файла полностью сформированной. Вместо этого это сохраняет данные файла в форме дельта-сжатия; изменения между версиями сохраняются с периодической полной копией, чтобы помочь быстрее восстановить версию.
Все 3 уровня должны быть скопированы в ваш репозиторий с удаленного сервера при клонировании.