La mayor parte se reduce a preferencias personales.
Rastreo todo lo que hago para un proyecto en Git. Especialmente porque Git maneja la mayoría de los tipos de archivos, incluso binarios, de manera suficientemente eficiente. (En lugar de las tonterías Altium SVN incorporadas)
Una de mis principales razones para hacerlo es que mis clientes no creen que Dropbox sea lo suficientemente seguro y necesito un sistema de respaldo al que pueda acceder en todo el mundo, con también un contexto de versiones sobre la mayoría de lo que hago. Así que configuré un servidor Git privado y un sistema de copia de seguridad cifrado y funciona de maravilla. Tableros, esquemas, código, documentación, informes, modificaciones manuales, todo se rastrea.
Normalmente crearía un Repositorio para Hardware, uno para Software y otro para Firmware si es un proyecto grande y potencialmente largo, pero para proyectos de servicio pequeños, ejemplos o pequeños experimentos, a menudo lo pongo todo en un repositorio, ya que el resultado el caos no será grande.
En Git puede usar sub-repositorios también para integrar el Firmware en el proyecto de Hardware o al revés, incluso si son repositorios administrados por separado.
Para los proyectos más grandes, también uso comúnmente sistemas de seguimiento de errores para realizar un seguimiento de los problemas y las resoluciones, de nuevo para HW y SW, Mantis es un buen sistema que se puede usar de forma gratuita.
Para las revisiones de hardware que genero Gerbers, o lo que sea que tenga, etiquetado con el Git Hash para esa revisión, esos Gerbers son los únicos elementos discretos "anticuados" en carpetas por R01, 02, etc. Ya que no desea regenerarlos todo el tiempo, pero son archivos resultantes, por lo que no deberían ser versionados en Git, realmente (porque su software de diseño debe ser determinista con la generación de contenido de producción, o de lo contrario ...).
Si hay algo interesante en R01 que no está sucediendo en R02 (o al revés), tiene dos Git Hashes con los que puede comparar archivos fuente, no se preocupe.
Como nota final, un ejemplo conceptual de un proyecto tendría un repositorio de hardware, que también aloja un archivo "BoardPinout.h". Este archivo se incluye como un archivo versionado de forma remota en el repositorio de firmware, que tiene algunos archivos de definición de interfaz que se incluyen de forma remota en el repositorio de software.
Es decir, cada vez que cambio algunas señales sin modificar una amplia funcionalidad, el proyecto HW "actualiza" el BoardPinout, que luego puede actualizarse y usarse en Firmware, y así sucesivamente.