Мне интересно, буду ли я использовать git субмодулей или поддеревьев в этом конкретном c сценарии использования:
Мы иметь много устройств (семейств продуктов), которые содержат несколько печатных плат с микроконтроллерами (код c), которые управляют двигателями и измеряют различные физические значения через датчики, и они подключены через сетевую связь (CAN). В одном продукте мы используем несколько разных печатных плат, но нередко одна и та же печатная плата встроена в машину с другим кодом приложения.
Мы не хотели бы использовать одно монорепо, потому что кодовая база велика. По сути, идея состоит в том, чтобы организовать код на уровне печатной платы, потому что мы обычно работаем на одной плате одновременно, а спецификация приложения и кода печатной платы c других плат не имеет значения, когда мы работаем с этой указанной c платой. Другое преимущество состоит в том, что таким образом история хранилища может быть более чистой.
Если у нас есть только хранилище PCB Speci c, тогда это будет проблемой, потому что мы будем дублировать много кода. Пример: каждая плата обменивается данными через CAN или использует SPI для чтения данных датчика. Поэтому имеет смысл собрать эти общие части в одно или несколько дополнительных хранилищ. Вопрос: как поделиться содержимым этих общих репозиториев в git? (например, репозитории драйверов или промежуточного программного обеспечения)
Примечание: многие люди рекомендуют поддерево, но в основном в тех случаях, когда вам просто нужна библиотека из github и вы на самом деле не планируете возвращать содержимое sh назад в исходный удаленный репозиторий.