其中大部分归结为个人喜好。
我在 Git 中跟踪我为一个项目所做的一切。特别是因为 Git 足够有效地处理大多数类型的文件,甚至是二进制文件。(代替内置的Altium SVN废话)
我这样做的主要原因之一是我的客户并不都觉得 Dropbox 足够安全,我需要一个可以在全球范围内访问的备份系统,而且我所做的大部分工作也有一些版本控制上下文。所以我建立了一个私人 Git 服务器和加密备份系统,它很有效。板、原理图、代码、文档、报告、手动修改,一切都被跟踪。
我通常会为硬件创建一个存储库,一个用于软件,一个用于固件,如果它是一个大型的、可能长期运行的项目,但对于小型服务项目、示例或小实验,我经常将它们全部放在一个存储库中,因为结果混乱不会很大。
在 Git 中,您也可以使用子存储库将固件集成到硬件项目中,或者反过来,即使它们是单独管理的存储库。
对于较大的项目,我通常也使用错误跟踪系统来跟踪问题和解决方案,同样对于硬件和软件,Mantis 是一个不错的可以免费使用的项目。
对于硬件修订,我生成 Gerber 或任何你有的,用 Git Hash 标记为该修订,这些 Gerber 是 R01、02 等文件夹中唯一离散的“老式”版本化的东西。因为你不想一直在重新生成它们,但它们是生成的文件,所以不应该在 Git 本身中进行版本控制,真的(因为你的设计软件应该在生成生产内容时是确定性的,否则......)。
如果 R01 中有一些有趣的事情在 R02 中没有发生(或相反),那么您有两个 Git 哈希,您可以使用它们来比较源文件,不用担心。
最后一点,项目的一个概念示例将有一个硬件存储库,该存储库还托管一个“BoardPinout.h”文件。该文件作为远程版本控制文件包含在固件存储库中,其中有一些接口定义文件可以远程包含到软件存储库中。
这意味着每次我在不修改广泛功能的情况下更改一些信号时,硬件项目都会“更新”BoardPinout,然后可以更新并在固件中使用,等等。