Das meiste davon hängt von persönlichen Vorlieben ab.
Ich verfolge alles, was ich für ein Projekt in Git mache. Zumal Git die meisten Dateitypen, auch Binärdateien, ausreichend effizient verarbeitet. (Anstelle des eingebauten Altium SVN-Unsinns)
Einer meiner Hauptgründe dafür ist, dass meine Kunden nicht alle der Meinung sind, dass Dropbox sicher genug ist, und ich ein Backup-System benötige, auf das ich weltweit zugreifen kann, mit einem gewissen Versionskontext für die meisten meiner Aktivitäten. Also habe ich einen privaten Git-Server und ein verschlüsseltes Backup-System eingerichtet und es funktioniert ein Vergnügen. Boards, Schaltpläne, Code, Dokumentation, Berichte, manuelle Änderungen, alles wird verfolgt.
Normalerweise würde ich ein Repository für Hardware erstellen, eines für Software und eines für Firmware, wenn es sich um ein großes, möglicherweise lang laufendes Projekt handelt, aber für kleine Serviceprojekte, Beispiele oder kleine Experimente habe ich seitdem oft alles in einem Repository zusammengefasst Das Chaos wird nicht groß sein.
In Git können Sie auch Unter-Repositorys verwenden, um die Firmware in das Hardware-Projekt zu integrieren, oder umgekehrt, selbst wenn es sich um separat verwaltete Repositorys handelt.
Bei größeren Projekten verwende ich häufig auch Bug-Tracking-Systeme, um Probleme und Lösungen zu verfolgen. Auch für HW und SW ist Mantis eine nette Version, die kostenlos verwendet werden kann.
Für Hardware-Revisionen generiere ich Gerbers oder was auch immer Sie haben, die mit dem Git Hash für diese Revision markiert sind. Diese Gerbers sind dann die einzigen diskreten "altmodischen" versionierten Inhalte in Ordnern von R01, 02 usw. Da Sie dies nicht möchten Generieren Sie sie die ganze Zeit neu, aber es handelt sich um resultierende Dateien. Sie sollten daher eigentlich nicht in Git selbst versioniert werden (da Ihre Design-Software beim Generieren von Produktionsinhalten deterministisch sein sollte, oder sonst ...).
Wenn es in R01 etwas Interessantes gibt, das in R02 nicht passiert (oder umgekehrt), haben Sie zwei Git Hashes, mit denen Sie Quelldateien vergleichen können, keine Sorge.
Abschließend möchte ich sagen, dass ein konzeptionelles Beispiel für ein Projekt ein Hardware-Repository enthält, in dem sich auch eine "BoardPinout.h" -Datei befindet. Diese Datei wird als remote versionierte Datei in das Firmware-Repository aufgenommen, das einige Schnittstellendefinitionsdateien enthält, die remote in das Software-Repository aufgenommen werden.
Das heißt, jedes Mal, wenn ich ein paar Signale ändere, ohne die allgemeine Funktionalität zu ändern, "aktualisiert" das HW-Projekt das BoardPinout, das dann aktualisiert und in der Firmware verwendet werden kann, und so weiter.