La plupart se résument à des préférences personnelles.
Je fais le suivi de tout ce que je fais pour un projet dans Git. D'autant plus que Git gère la plupart des types de fichiers, même binaires, de manière suffisamment efficace. (Au lieu de non-sens Altium SVN intégré)
L'une de mes principales raisons pour le faire est que mes clients ne pensent pas tous que Dropbox est suffisamment sûr et j'ai besoin d'un système de sauvegarde auquel je puisse accéder à travers le monde, avec également un contexte de versioning sur la plupart de mes activités. J'ai donc mis en place un serveur Git privé et un système de sauvegarde crypté et ça marche un régal. Cartes, schémas, code, documentation, rapports, modifications manuelles, tout est suivi.
Je créerais normalement un référentiel pour le matériel, un pour le logiciel et un pour le micrologiciel s'il s'agit d'un grand projet potentiellement de longue durée, mais pour les petits projets de service, des exemples ou de petites expériences, je mets souvent le tout dans un seul référentiel, car le résultat le chaos ne sera pas grand.
Dans Git, vous pouvez également utiliser des sous-référentiels pour intégrer le micrologiciel dans le projet matériel ou inversement, même s'il s'agit de référentiels gérés séparément.
Pour les projets plus importants, j'utilise également couramment des systèmes de suivi des bogues pour garder une trace des problèmes et des résolutions, encore une fois pour HW ainsi que SW, Mantis est un bon qui peut être utilisé gratuitement.
Pour les révisions matérielles, je génère des Gerbers, ou tout ce que vous avez, étiquetés avec le Git Hash pour cette révision, ces Gerbers sont alors les seuls éléments versionnés "à l'ancienne" discrets dans les dossiers par R01, 02, etc. Puisque vous ne voulez pas les régénérer tout le temps, mais ce sont des fichiers résultants donc ne devraient pas être versionnés dans Git lui-même, vraiment (parce que votre logiciel de conception devrait être déterministe avec la génération de contenu de production, ou bien ...).
S'il y a quelque chose d'intéressant dans R01 qui ne se produit pas dans R02 (ou l'inverse), vous avez deux Git Hash avec lesquels vous pouvez comparer les fichiers source, pas de soucis.
Enfin, un exemple conceptuel d'un projet aurait un référentiel matériel, qui héberge également un fichier "BoardPinout.h". Ce fichier est inclus en tant que fichier versionné à distance dans le référentiel du micrologiciel, qui contient quelques fichiers de définition d'interface qui sont inclus à distance dans le référentiel logiciel.
Cela signifie que chaque fois que je modifie quelques signaux sans modifier les fonctionnalités générales, le projet HW "met à jour" le BoardPinout, qui peut ensuite être mis à jour et utilisé dans le micrologiciel, etc.