Рами,
я боровшийся с вопросом себя немного более года назад, и пока я не уверен, что это правильный путь, так это то, как я это делаю, и, похоже, он работает хорошо.
Мой проект включает в себя малиновый Pi, поэтому я добавил мета-raspberrypi BSP в той же папке, что и проект Yocto (git клонирует проект BSP в папку Yocto).
Кроме того, я создал несколько слоев с собственным кодом или адаптацией других проектов, которые я хочу включить (например, hostapd, WiFi-драйверы, изменения ядра и т. Д.). Эти слои (называемые мета- *) также живут рядом со стандартными каталогами Yocto и находятся под контролем источника (в моем случае git), с отдельным репозиторием git для каждого слоя.
Каталог моей сборки находится в том же каталоге Yocto, но только файлы, которые мне нужны для поддержки, - это файлы конфигурации (local.conf и bblayers.conf). Я почти не изменяю эти файлы, поэтому я просто скопировал их в безопасное место. Остальная часть содержимого в моем каталоге сборки может быть восстановлена с нуля.
Я думаю, что можно сделать больше изменений в результирующем изображении, изменив файлы в каталоге сборки, но я попытался избежать этого с выраженной целью иметь возможность управлять версиями моего проекта.
Что касается внешних компонентов (малина Pi BSP и Yocto), я не видел явной необходимости поставить их под контроль источника. Я с радостью полагаю, что они будут доступны, и все изменения в них будут в моих собственных слоях.
Я надеюсь, что это поможет.
Внешние компоненты (Yocto, BSP, пакеты) TAG (конкретные версии)? Или, например, выгрузка и создание проекта через несколько месяцев загрузит более новую версию любого компонента? –
Мои проекты находятся в постоянном изменении, и у меня пока нет реальной необходимости отступать. Но то, что я делаю, это то, что у меня есть небольшой скрипт bash, который выводит ветку и значение sha1 для каждого слоя, включенного в мою сборку. Затем я сохраняю эту информацию вместе с моим встроенным изображением. Поскольку тег в основном является значением sha1, он должен позволить мне вернуться к предыдущему состоянию - как для моих собственных репозиториев, так и для внешних репозиториев (Yocto, BSP и т. Д.). –