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