Я не могу понять, почему из-за небольших различий с большими файлами мой репозиторий subversion так сильно увеличивается.
У меня есть zip-файл содержимого базы данных, используемой некоторыми тестами.Я хочу хранить каждую новую версию тестовых данных в нашем хранилище subversion.
Я провел несколько экспериментов, проверил последние несколько версий файла data.zip и посмотрел, что происходит с размеромрепозиторий.Размер несжатых данных составляет около 150 МБ, сжатых и заархивированных - около 50 МБ.Каждая новая версия файла data.zip, добавленная в хранилище, увеличивает размер хранилища примерно на 50 МБ.Я думаю, что он должен увеличиваться только на величину дельты, которая, как я ожидаю, будет намного меньше.
Subversion использует xdelta для хранения сжатых данных разностей.Моя попытка подтвердить, что SVN может работать лучше, была загрузить xdelta и убедиться, что между двумя версиями нет большой разницы.Действительно,
xdelta3.0z.x86-64.exe -e -s v1_path\data.zip v2_path\data.zip v1v2_delta.file
создал файл v1v2_delta.file размером около 3 МБ.
Я посмотрел в SVN-репозитории на [myrepo] \ db \ revs и могу видеть большие файлы для каждого новогоrevision
02/08/2011 11:12 57,853,082 4189
02/08/2011 11:40 51,713,289 4190
02/08/2011 11:46 52,286,060 4191
(4189, 4190 и 4191 - имена файлов.)
Я даже пытался сжать data.zip без сжатия.Это не имело никакого значения к тому, что хранит SVN - с моей точки зрения, я думаю, что он хранит сжатую копию всего data.zip для каждой ревизии, а не только для первой.Я использую SVN 1.6 с бэкэндом FSFS.
Существуют и другие хорошие ответы на вопросы stackoverflow о фиксации двоичных файлов и о том, как SVN хранит дельты, например, производительность SVN после многих ревизий .Но я не могу понять из этого, почему дельты не сохраняются в вышеупомянутом случае - т.е.если xdelta может получить такой маленький автономный прогон diff, конечно, SVN тоже может - или он не хочет?!
Редактировать: Я также пробовал tar (несжатые) файлы, сноваSVN не хранит их эффективно.Также я обнаружил, что у нас есть zip-файл того же формата данных (хотя и гораздо меньшего размера) в другом хранилище, где SVN только что сохранил diff .
Итак, краткая версия этого вопроса такова: SVN может эффективно хранить бинарные файлы, например, 10, несколько отличающихся файлов САПР, в 1,2 раза больше размера 1 .SVN даже иногда может быть экономичным с помощью сжатых zip-файлов.Но очевидно, что это не всегда эффективно с двоичными файлами - при каких условиях это так?