Мы делаем что-то похожее на «встроенную» разработку, и я могу сказать вам, что мы экономим:
- номер версии SVN и метка времени, а также машина, на которой он был создан и кем (также записанный в двоичные файлы сборки)
- полный журнал сборки, показывающий, была ли это полная / инкрементная сборка, любой интересный (STDERR) вывод созданных инструментов для выпечки данных, список скомпилированных файлов и любые предупреждения компилятора (это сжимается очень хорошо, будучи текстовым)
- фактические двоичные файлы (для 1-8 конфигураций сборки)
- файлов, создаваемых как побочный эффект компоновки: командный файл компоновщика, карта адресов и своего рода файл "манифеста", указывающий, что было записано в конечные двоичные файлы (CRC и размер для каждого), а также базу данных отладки. (эквивалент .pdb)
Мы также рассылаем результаты запуска некоторых инструментов над файлами «побочных эффектов» заинтересованным пользователям. Мы на самом деле не архивируем их, так как мы можем воспроизвести их позже, но эти отчеты включают в себя:
- общее и дельта размера файловой системы, с разбивкой по типу файла и / или каталогу
- общее и дельта размеров разделов кода (.text, .data, .rodata, .bss, .sinit и т. Д.)
Когда у нас запущены юнит-тесты или функциональные тесты (например, тесты дыма), эти результаты отображаются в журнале сборки.
Мы еще ничего не выбросили - учитывая, что наши целевые сборки обычно заканчиваются на ~ 16 или 32 МБ на конфигурацию, и они довольно сжимаемы.
Мы сохраняем несжатые копии двоичных файлов в течение 1 недели для удобства доступа; после этого мы оставляем только слегка сжатую версию. Примерно раз в месяц у нас есть сценарий, который извлекает каждый файл .zip, который производит процесс сборки, и 7-zip целый месяц результатов сборки вместе (который использует только небольшие различия в сборке).
В среднем в день может быть от дюжины до двух сборок на проект ... Сервер сборки включается примерно каждые 5 минут, чтобы проверить наличие соответствующих различий и сборок. Полный .7z на большом очень активном проекте в течение одного месяца может быть 7-10 ГБ, но это, безусловно, доступно.
По большей части мы смогли диагностировать все таким образом. Иногда в системе сборки происходит сбой, и файл на самом деле не является версией, которой он должен быть, когда происходит сборка, но в журналах обычно достаточно доказательств этого. Иногда нам нужно отыскать инструмент, который понимает формат базы данных отладки, и выдать ему несколько адресов, чтобы диагностировать сбой (у нас есть встроенные в продукт автоматические дампы стека). Но обычно вся необходимая информация есть.
Нам еще не приходилось взламывать архивы .7z. Но у нас там есть информация, и у меня есть несколько интересных идей о том, как извлечь из нее кусочки полезных данных.