La maggior parte dipende dalle preferenze personali.
Traccio tutto ciò che faccio per un progetto in Git. Soprattutto dal momento che Git gestisce la maggior parte dei tipi di file, anche binari, in modo sufficientemente efficiente. (Al posto del nonsense Altium SVN incorporato)
Uno dei miei principali motivi per farlo è che i miei clienti non pensano tutti che Dropbox sia abbastanza sicuro e ho bisogno di un sistema di backup a cui posso accedere in tutto il mondo, con anche un po 'di contesto di versione sulla maggior parte di ciò che faccio. Quindi ho impostato un server Git privato e un sistema di backup crittografato e funziona a meraviglia. Schede, schemi, codice, documentazione, rapporti, modifiche manuali, tutto è tracciato.
Normalmente creerei un repository per hardware, uno per software e uno per firmware se si tratta di un progetto di grandi dimensioni, potenzialmente di lunga durata, ma per progetti di servizi di piccole dimensioni, esempi o piccoli esperimenti spesso inserisco tutto in un repository, poiché il risultato il caos non sarà grande.
In Git è possibile utilizzare anche repository per integrare il firmware nel progetto Hardware o viceversa, anche se sono repository gestiti separatamente.
Per i progetti più grandi uso comunemente anche i sistemi di tracciamento dei bug per tenere traccia di problemi e risoluzioni, sempre per HW e SW, Mantis è uno che può essere utilizzato gratuitamente.
Per le revisioni hardware che ho generato Gerbers, o qualsiasi altra cosa tu abbia, etichettato con Git Hash per quella revisione, quei Gerbers sono quindi le uniche cose discrete "vecchio stile" nelle cartelle di R01, 02, ecc. Dato che non vuoi rigenerarli continuamente, ma sono file risultanti, quindi non dovrebbero essere sottoposti a versione in Git stesso, in realtà (perché il software di progettazione dovrebbe essere deterministico con la generazione di contenuti di produzione, oppure ...).
Se c'è qualcosa di interessante in R01 che non sta accadendo in R02 (o viceversa), hai due Git Hash con cui puoi confrontare i file di origine, senza preoccupazioni.
Come nota finale, un esempio concettuale di un progetto avrebbe un repository Hardware, che ospita anche un file "BoardPinout.h". Questo file è incluso come file con versione remota nel repository Firmware, che ha alcuni file di definizione dell'interfaccia che vengono inclusi in remoto nel repository Software.
Significa che ogni volta che cambio alcuni segnali senza modificare un'ampia funzionalità, il progetto HW "aggiorna" BoardPinout, che può quindi essere aggiornato e utilizzato in Firmware e così via.