В hg clone, в чем разница между "добавлением наборов изменений", "добавлением манифестов" и "добавлением изменений в файл"?

Из документации Mercurial:

Манифест - это файл, описывающий содержимое хранилища с определенным идентификатором набора изменений https://www.mercurial-scm.org/wiki/Manifest

При клонировании репозитория Mercurial я вижу строки вывода:

adding changesets
adding manifests
adding file changes

Я не понимаю разницу между этими вещами. Я думал, что понял, что такое набор изменений, но я не знаю, как он будет отличаться от набора "изменений файла". И на основании приведенного выше описания манифест звучит как одно и то же. Так в чем же разница между всеми этими?

1 ответ

Mercurial делит информацию, которую нужно отслеживать в системе управления версиями, на несколько уровней:

  • Наборы изменений - метаданные о каждой ревизии. Кто (автор), когда (дата и время), почему (текст резюме) и что (затронутые имена файлов) и т. Д. Хранятся здесь.
  • Манифесты - каждый манифест перечисляет ревизии файлов для файлов данной ревизии. Это похоже на таблицу ссылок в базе данных; содержимое файла не содержится, только какая версия данного файла является частью этой ревизии.
  • Файл изменяется - эти файлы хранят фактические данные файла. Неэффективно хранить каждую когда-либо созданную версию данного файла полностью сформированной. Вместо этого это сохраняет данные файла в форме дельта-сжатия; изменения между версиями сохраняются с периодической полной копией, чтобы помочь быстрее восстановить версию.

Все 3 уровня должны быть скопированы в ваш репозиторий с удаленного сервера при клонировании.

См. Страницу Mercurial Wiki Design для деталей.

Другие вопросы по тегам