Репозиторий Subversion имеет небольшой размер файла по сравнению с рабочей копией?

Я использую приложение Versions на Mac для обработки SVN-репозитория для своих файлов. Моя рабочая копия составляет около 6 Мб, но мой репозиторий составляет всего 1,4 Мб, и я держу пять ревизий в репозитории!

Как это может быть?

Ответ 1

SVN сжимает одну версию вашего кода различий между каждой версией. Вот почему это не занимает много места.

Чтобы сохранить репозиторий небольшим, Subversion использует deltification (или дефинированное хранилище) в пределах сам репозиторий. Deltification включает кодирование представления фрагмента данных как совокупности отличия от другого куска данных. Если две части данных очень похоже, эта делизация приводит к экономии хранилища для дельтализованный кусок - вместо того, чтобы пространство, равное размеру исходные данные, он занимает достаточно пространство, чтобы сказать: "Я выгляжу так же, как это другой фрагмент данных, кроме для следующих нескольких изменений." В результате большая часть данные репозитория, которые, как правило, громоздким, а именно, содержанием файлы с версией - хранится в меньший размер, чем оригинал полнотекстовое представление этих данных. И для репозиториев, созданных с помощью Subversion 1.4 или новее, пространство еще лучше - теперь эти полнотекстовые представления файла содержимое сами сжаты.

Более подробную информацию можно найти здесь

Ответ 2

Ответ Nawaman уже объяснил, что данные в хранилище сжаты достаточно эффективно.

Другая половина истории - это то, что subversion сохраняет нетронутую копию каждого файла в папках .svn вашей рабочей копии. Это позволяет subversion обрабатывать команды svn status или svn diff, не связываясь с сервером репозитория, но удваивает размер вашей рабочей копии.

Ответ 3

Ваша рабочая копия обычно содержит много дополнительных временных файлов, таких как объектный код и предварительно скомпилированные заголовки, которые не требуются для контроля версий. Я думаю, если вы очистите рабочую копию или сделаете новую проверку, она будет намного меньше.

Ответ 4

Вот несколько причин, по которым я могу думать - svn хранит ваши ревизии в виде наборов изменений, а не версий файлов. - svn хранит данные в своем бэкэнд (FSFS/BDB), который имеет некоторые методы сжатия, которые уменьшают размер. Если в репозитории больше текстовых файлов, тем больше сжатие, следовательно, может ожидать резкого уменьшения размера. - Для поддержки нескольких команд (например, svn info, diff и т.д.) Без сетевого подключения (также для получения более быстрых результатов) svn поддерживает некоторую дополнительную информацию в каталогах .svn. Дополнительная информация включает копию всей рабочей копии.