Репозиторий 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. Дополнительная информация включает копию всей рабочей копии.