Большая часть этого сводится к личным предпочтениям.
Я отслеживаю все, что я делаю для проекта в Git. Тем более, что Git обрабатывает большинство типов файлов, даже двоичных, достаточно эффективно. (Взамен встроенной ерунды Altium SVN)
Одна из моих главных причин сделать это заключается в том, что мои клиенты не все считают, что Dropbox достаточно безопасен, и мне нужна резервная система, к которой я могу получить доступ по всему миру, а также некоторый контекст управления версиями большинства моих действий. Поэтому я настроил частный сервер Git и зашифрованную систему резервного копирования, и это работает. Платы, схемы, код, документация, отчеты, ручные модификации, все отслеживается.
Обычно я создавал бы репозиторий для аппаратного обеспечения, один для программного обеспечения и один для встроенного программного обеспечения, если это большой, потенциально длительный проект, но для небольших сервисных проектов, примеров или небольших экспериментов я часто помещаю все это в один репозиторий, поскольку хаос не будет большим.
В Git вы также можете использовать вложенные репозитории для интеграции Прошивки в проект Hardware или наоборот, даже если они являются отдельно управляемыми репозиториями.
Для более крупных проектов я также обычно использую системы отслеживания ошибок, чтобы отслеживать проблемы и решения, опять же для HW, а также для SW, Mantis - это хорошая программа, которую можно использовать бесплатно.
Для аппаратных ревизий, которые я генерирую Gerbers, или что там у вас, помеченные Git Hash для этой ревизии, эти Gerbers являются единственными дискретными «старомодными» версиями в папках по R01, 02 и т. Д. Так как вы не хотите обновляйте их все время, но они являются результирующими файлами, поэтому не следует создавать версии в самом Git (потому что ваше программное обеспечение для разработки должно быть детерминированным при создании производственного контента, или иначе ...).
Если в R01 есть что-то интересное, чего нет в R02 (или наоборот), у вас есть два Git-хэша, с которыми вы можете сравнивать исходные файлы, не беспокойтесь.
В заключение, один концептуальный пример проекта будет иметь аппаратный репозиторий, который также содержит файл «BoardPinout.h». Этот файл включен в качестве файла с удаленной версией в хранилище прошивки, в котором есть несколько файлов определения интерфейса, которые удаленно включаются в хранилище программного обеспечения.
То есть каждый раз, когда я изменяю несколько сигналов без изменения широкого функционала, проект HW «обновляет» BoardPinout, который затем можно обновлять и использовать в прошивке и так далее.