La mayoría 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 sin sentido Altium SVN incorporado)
Una de mis principales razones para hacerlo es que mis clientes no sienten que Dropbox sea lo suficientemente seguro y que necesito un sistema de respaldo al que pueda acceder en todo el mundo, también con algún contexto de versiones en la mayoría de lo que hago. hacer. Así que configuré un servidor Git privado y un sistema de copia de seguridad encriptado y funciona muy bien. Tableros, esquemas, código, documentación, informes, modificaciones manuales, todo está rastreado.
Normalmente crearía un Repositorio para Hardware, uno para Software y Firmware si es un proyecto grande, potencialmente de larga ejecución, pero para pequeños proyectos de servicio, ejemplos o pequeños experimentos, a menudo lo pongo todo en un repositorio, ya que el caos resultante 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 se trata de repositorios administrados por separado.
Para los proyectos más grandes, también suelo utilizar sistemas de seguimiento de errores para realizar un seguimiento de los problemas y las resoluciones, de nuevo para HW y SW, Mantis es una buena opción que se puede utilizar de forma gratuita.
Para las revisiones de hardware genero a Gerbers, o lo que sea, etiquetado con el Git Hash para esa revisión, esos Gerberos son los únicos elementos discretos "pasados de moda" versionados en carpetas por R01, 02, etc. t desea regenerarlos todo el tiempo, pero son archivos resultantes, por lo que no deberían ser versionados en Git en realidad (porque su software de diseño debería ser determinista al generar contenido de producción, o bien ...).
Si hay algo interesante en R01 que no está sucediendo en R02 (o al revés), tienes dos Git Hashes con los que puedes comparar archivos de origen, sin preocupaciones.
Como nota final, un ejemplo conceptual de un proyecto, tendría un repositorio de Hardware, que también alberga un archivo "BoardPinout.h". Este archivo se incluye como un archivo de versión 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.
Lo que significa que cada vez que cambio algunas señales sin modificar la funcionalidad general, el proyecto HW "actualiza" el BoardPinout, que luego puede actualizarse y usarse en Firmware, y así sucesivamente.