|
|
|
[[_TOC_]]
|
|
|
|
|
|
|
|
#### Поочередная раздельная сборка проектов и последующий совокупный анализ
|
|
|
|
|
|
|
|
**Алгоритм решения**
|
|
|
|
|
|
|
|
1. для каждого отдельного проекта библиотеки и для для общего проекта выполняются отдельные сборки
|
|
|
|
|
|
|
|
`svace build <build_script>`
|
|
|
|
|
|
|
|
2. в каждом из каталогов проектов библиотек выполняется
|
|
|
|
|
|
|
|
`svace export-build --path dirN`
|
|
|
|
|
|
|
|
в этих папках dirN будут находится экспортированные результаты сборки.
|
|
|
|
|
|
|
|
3. в каталоге общего проекта для каждого из проектов библиотек выполняется набор команд
|
|
|
|
|
|
|
|
`svace history import-data --type build --path dirN`
|
|
|
|
|
|
|
|
позволяющий импортировать результаты сборок библиотек в общий проект. В конце выполнения каждой команды пишется хэш билд-объекта, который импортирован.
|
|
|
|
|
|
|
|
4. объединение результатов всех сборок выполняется командой
|
|
|
|
|
|
|
|
`svace merge-build hash1 hash2 ... hashN`
|
|
|
|
|
|
|
|
где хэши это хэши, полученные на предыдущем этапе.
|
|
|
|
|
|
|
|
5. общий анализ в каталоге общего проекта выполняется как обычно (к этому моменту все должно быть уже слинковано)
|
|
|
|
|
|
|
|
`svace analyze`
|
|
|
|
|
|
|
|
Рекомендуется выполнять анализ командой
|
|
|
|
|
|
|
|
`svace analyze --build hash`
|
|
|
|
|
|
|
|
где hash - это явно указываемый хэш объединённого объекта, который выводит команда merge-build.
|
|
|
|
|
|
|
|
|
|
|
|
#### Миграция разметки в другую ветку
|
|
|
|
|
|
|
|
|
|
|
|
**Описание задачи:** Имеется 2 ветки разрабатываемого приложения *MyProj* - master, custom. В основном код веток совпадает, большая часть предупреждений предположительно будет общая. Изначально выполнено несколько итераций анализа и разметки предупреждений в ветке master, есть несколько последовательных сборок. Как правильно выполнить миграцию полученные предупреждения в ветку custom?
|
|
|
|
|
|
|
|
Сборка и анализ проектов выполняются на хосте А, сервер историй настроен и запущен на хосте В. Частным случаем является совпадением хостов А и B - сервер сборки, анализа и хранения истории это один сервер.
|
|
|
|
|
|
|
|
**Алгоритм решения**
|
|
|
|
|
|
|
|
1. сборка и анализ нужной ветки выполняется на хосте А, импорт результатов в нужную ветку выполняется на сервере истории на хосте В. Для проекта *MyProj* на хосте В необходимо создать одну главную папку проекта командой
|
|
|
|
|
|
|
|
`svace server admin create --project MyProj`
|
|
|
|
|
|
|
|
В данной папке на хосте В будет храниться вся история для всех веток. При этом на хосте А будет храниться папка проекта (если вы переиспользуете одну и ту же папку проекта для всех анализов) или несколько папок проекта (если вы создаете новую папку проекта для каждого нового анализа).
|
|
|
|
|
|
|
|
2. клонирование ветки --master в ветку --custom в сервере историй на хосте B выполняется командой
|
|
|
|
|
|
|
|
`svace history branch clone --source master --target clone`
|
|
|
|
|
|
|
|
3. после выполнения анализа ветки --custom проекта на хосте А, при помощи выполнения на хосте А команды
|
|
|
|
|
|
|
|
`svace remote --host B --path MyProj history import --branch custom`
|
|
|
|
|
|
|
|
вы импортируете результаты последнего анализа на сервер истории на хосте В в ветку --custom проекта MyProj. Если не указать параметр --branch, то по умолчанию будет использована ветка --master.
|
|
|
|
|
|
|
|
4. для копирования разметки между ветками используется команда
|
|
|
|
|
|
|
|
`svace history branch sync master custom`
|
|
|
|
|
|
|
|
#### Перенос разметки при клонировании бранчей в svacer
|
|
|
|
|
|
|
|
В случае если с использованием GUI svacer с помощью метода клонирования для проекта создан новый бранч, данный бранч получает все снэпшоты родительского проекта. Данный бранч существует только в пространстве БД svacer (никак не связан с бранчами в .svace-dir проекта).
|
|
|
|
|
|
|
|
В случае если импорт с указанием бранча с помощью `svacer import` выполняется без первоначального создания бранча в GUI svacer, клонирование и создание бранча произойдет автоматически на момент загрузки (svacer upload) от последнего снэпшота на master-бранче. Снэпшоты в промежуточном хранилище (svacer-dir) упорядочиваются и обрабатываются по времени.
|
|
|
|
|
|
|
|
**Рекомендуется создать конфигурацию бранчей заранее, и указывать именно их в параметрах `svacer import`.** |
|
|
|
\ No newline at end of file |