Я использую приложение Versions на Mac для обработки SVN-репозитория для своих файлов. Моя рабочая копия составляет около 6 Мб, но мой репозиторий составляет всего 1,4 Мб, и я держу пять ревизий в репозитории!
Как это может быть?
Я использую приложение Versions на Mac для обработки SVN-репозитория для своих файлов. Моя рабочая копия составляет около 6 Мб, но мой репозиторий составляет всего 1,4 Мб, и я держу пять ревизий в репозитории!
Как это может быть?
SVN сжимает одну версию вашего кода различий между каждой версией. Вот почему это не занимает много места.
Чтобы сохранить репозиторий небольшим, Subversion использует deltification (или дефинированное хранилище) в пределах сам репозиторий. Deltification включает кодирование представления фрагмента данных как совокупности отличия от другого куска данных. Если две части данных очень похоже, эта делизация приводит к экономии хранилища для дельтализованный кусок - вместо того, чтобы пространство, равное размеру исходные данные, он занимает достаточно пространство, чтобы сказать: "Я выгляжу так же, как это другой фрагмент данных, кроме для следующих нескольких изменений." В результате большая часть данные репозитория, которые, как правило, громоздким, а именно, содержанием файлы с версией - хранится в меньший размер, чем оригинал полнотекстовое представление этих данных. И для репозиториев, созданных с помощью Subversion 1.4 или новее, пространство еще лучше - теперь эти полнотекстовые представления файла содержимое сами сжаты.
Более подробную информацию можно найти здесь
Ответ Nawaman уже объяснил, что данные в хранилище сжаты достаточно эффективно.
Другая половина истории - это то, что subversion сохраняет нетронутую копию каждого файла в папках .svn
вашей рабочей копии. Это позволяет subversion обрабатывать команды svn status
или svn diff
, не связываясь с сервером репозитория, но удваивает размер вашей рабочей копии.
Ваша рабочая копия обычно содержит много дополнительных временных файлов, таких как объектный код и предварительно скомпилированные заголовки, которые не требуются для контроля версий. Я думаю, если вы очистите рабочую копию или сделаете новую проверку, она будет намного меньше.
Вот несколько причин, по которым я могу думать - svn хранит ваши ревизии в виде наборов изменений, а не версий файлов. - svn хранит данные в своем бэкэнд (FSFS/BDB), который имеет некоторые методы сжатия, которые уменьшают размер. Если в репозитории больше текстовых файлов, тем больше сжатие, следовательно, может ожидать резкого уменьшения размера. - Для поддержки нескольких команд (например, svn info, diff и т.д.) Без сетевого подключения (также для получения более быстрых результатов) svn поддерживает некоторую дополнительную информацию в каталогах .svn. Дополнительная информация включает копию всей рабочей копии.