2014-01-09 3 views
52

В нашем проекте мы приняли решение сократить время сборки, используя предварительно созданные двоичные файлы. Еженедельно/ежемесячно мы создаем стабильный выпуск и передаем его в репозиторий. Конструкция использует эти двоичные файлы вместо того, чтобы строить все из источника.Уменьшение размера папки .svn

Для скорости строительства это фантастика. Но, неудивительно, это действительно увеличивает размер проверки SVN. Наш багажник в настоящее время находится на ~ 22   ГБ. Я понимаю, что это не предполагаемое использование Subversion. Но на данный момент у нас нет альтернативы.

Но я бы хотел улучшить текущую ситуацию. Папка .svn вносит большой вклад в размер багажника на диске. Когда бинарные файлы обновляются, похоже, что они хранят несколько баз в папке .svn. То есть, если двоичный код равен 4   ГБ, есть копия в .svn. Если он обновлен, папка .svn содержит исходную базу плюс новую базу и содержит до 8   ГБ для этого одного файла.

Можно ли указать Subversion не поддерживать базу в папке .svn для определенных файлов? Через google я нашел аналогичный вопрос, How to decrease .svn folder size?.

Ответ Саймон получил был

  • Используйте частичный контроль (который не будет работать для меня, как мне нужны бинарные файлы)
  • Это еще не особенность Subversion
  • Это обсуждалось , но не будет функционировать, пока, по крайней мере, не будет Subversion 1.8

К счастью для меня Subversion 1.8 был выпущен. Была ли эта функция добавлена?

Я не заметил его в the release notes. Несмотря на то, что «сокращение хранилищ и хранилищ» выглядит многообещающим.

+1

На самом деле это не значит, что подрывная сияние - вы должны изучить искусственный или нексус, чтобы хранить артефакты и разрешать (извлекать) их с помощью скрипта сборки. – thekbb

+0

К сожалению, мы это знали. Но его просто так удобно использовать svn. В прошлом, в другом проекте, мы использовали Maven. Но, по-видимому, это оставило плохой вкус во многих людях. Затем появился специальный инструмент, который я могу описать только как Maven (но который, конечно же, решил все проблемы Maven). Это тоже оставило плохой вкус. В нашем последнем проекте мы только что начали использовать svn. –

ответ

49

Невозможно избавиться от необходимости хранить причуды на этом этапе. Об этом говорили, но на самом деле это нелегкая проблема, потому что существует так много различных ситуаций использования, которые будут представлены путем их удаления.

With 1.7 the pristine storage was changed, и в некоторых случаях вы можете увидеть ситуацию хуже, чем до 1.7. Пристоины теперь хранятся в файлах, названных хешем девственной. Поэтому, если у вас есть несколько одинаковых файлов, у вас не будет сохранено дублирующихся древесных массивов. Тем не менее, мы также не очищаем причуды. Поэтому они просто продолжают расти. Вы можете активировать неиспользуемые древесные отходы с помощью svn cleanup.

Есть смысл хранить неиспользуемые древесные отроги, если вы переключаетесь между ветвями, нам больше не нужно загружать вещи, которые вы уже имеете в первозданном виде в 1.8.

+0

Спасибо, Бен. Я подозревал, что это будет ответ. Но я надеялся, что иначе, я полагаю. Советы по очистке svn удобны для понимания. Мы предполагаем, что он может удалить дополнительные нетронутые предметы, но еще не был проверен. Мне нравится, что md5 используется для хранения только уникальных копий. Но не удалять старые копии «кажется» некорректно. Переключение филиалов - это сценарий, поддерживаемый этим поведением. Но я «подозреваю», что чаще старый древний никогда больше не будет использоваться. т. е. он просто всасывает дисковое пространство. Хотя наше безоговорочное использование svn делает это заметным, я думаю, что это также относится к обычным проектам. –

+0

Мы согласны с тем, что на этом есть проблема: http://subversion.tigris.org/issues/show_bug.cgi?id=4071 –

+2

Это здорово, вместе с [svn update --set-depth = exclude] (http: //stackoverflow.com/a/8446590/1904815), это спасло мне 12 гигабайт. – JonnyJD

19

Для тех, кто использует команду Cleanup TortoiseSVN клиента, а не svn cleanup команды, размер .svn папки могут быть уменьшены, убедившись, что Вакуумные нетронутые копии опция отмечена:

enter image description here

Кроме того, рекомендуется очистка на верхнем уровне рабочей копии, как указано here.

[Редактировать]

В соответствии с this answer и SVN change log, svn cleanup имеет возможность вакуумировать нетронутые копии (/vacuum). Это делается по умолчанию, начиная с 1,8.

Смежные вопросы