Mercurial передает полные файлы или только различия? - PullRequest
2 голосов
/ 08 февраля 2012

У нас есть файл 200 МБ. В настоящее время мы используем rsync для передачи его между разработчиками при его изменении. Если мы включим его как часть нашего Mercurial репозитория, будет ли Mercurial передавать только diff как rsync, или он будет передавать полный файл после изменения?

Ответы [ 2 ]

5 голосов
/ 08 февраля 2012

Mercurial передает дельты только тогда, когда вы hg pull.В противном случае распределенное управление версиями не будет работать вообще.

Когда вы hg pull, вы получаете все наборы изменений, отсутствующие в вашем локальном клоне.Каждая ревизия содержит только дельту.Дельта может быть маленькой или большой, но если вы довольны дельтами, найденными rsync сегодня, то вы также должны быть довольны Mercurial.

О двоичных файлах: Mercurial не не различать текстовые и двоичные файлы при совершении коммита.Все они обрабатываются одинаково, и дельта-сжатие используется во всех случаях.Что может сбить с толку, так это то, что дельта-сжатие бесполезно, если файл радикально изменяется при каждом редактировании - дельта будет такой же большой, как и сам файл.В этом случае Mercurial на самом деле сохраняет сжатый снимок файла.

2 голосов
/ 08 февраля 2012

Несколько расширений Mercurial были написаны для обработки больших файлов. Они работают путем контроля версий контрольной суммы, а не управления версиями самого файла.

Если вы используете Mercurial 2.0 или более позднюю версию, то по умолчанию он включает LargeFilesExtension . Документы объясняют, как работает расширение:

Расширение largefiles позволяет отслеживать большие несжимаемые двоичные файлы в Mercurial, не требуя чрезмерной пропускной способности для клоны и тянет. Файлы, добавленные как крупные файлы, не отслеживаются напрямую Mercurial; скорее их исправления идентифицируются контрольной суммой, и Mercurial отслеживает эти контрольные суммы. Таким образом, когда вы клонируете репозиторий или вытащить ревизии, большие файлы в старых ревизиях из репозитория не нужны, а для обновления нужны только те к текущей версии загружаются. Это экономит место на диске и ширина полосы частот.

Есть и другие расширения, которые вы можете использовать. Здесь больше информации: Обработка больших файлов

...