Это то все здорово, одного понять не могу как раз там где боль, что нужно делать, чтобы можно было поддерживать несколько железяк с различной конфигурацией, при этом фичи не терять...тут подход мне не очевиден, да и вообще я сомневаюсь, что эта история как-то решается просто.
ну я использую разные репы для железок. если базовые вещи одни, то пилю на одной из, а потом патчами добавляю в другие. ибо из-за разной конфигурации все равно уже все разное. если хочется один реп. тогда конфигурацию хранить рядом в виде файлов и какая то магия во время сборки, через ifdef-ы