我正在做一个新的项目,我计划把它保存在一个git存储库中。我知道我会如何在CVS中这样做,但我对git有点陌生,可能需要一些建议。
该项目是两个嵌入式设备的固件,它们相互通信,并打包成一对。对于这两种设备,代码都有一个生产变体和一个制造变体。两个设备项目都有许多子/兄弟项目,用于执行各种硬件比特(闪烁LED等)或硬件相关的代码比特(驱动等)。大多数代码都是通用的。
我也有一个要求,能够重新生产和制造固件相互独立,以防止一个改变,从一个发送回另一个通过验证。
下面是我现有的目录布局。它是有机生长的,在我知道我会使用git之前,它基本上已经被放置下来了。如果有更好的方法,我不反对重组整件事。
- DeviceB
- production
- manufacturing
- blink
- buttons
- ...
我很想把生产和制造放在分支机构上,但我通常在给定的一天内都从事这两方面的工作,而git只允许一个分支一次活动。然后我就不知道该如何处理眨眼,按钮等,因为它们不是真正的制造或生产。有什么建议吗?
Clarifications:
发布于 2009-05-19 07:00:22
我用git来管理硬件/软件的协同设计,所以我可能有一些有用的建议。
经验法则是,如果您的设计中有可以相互操作的部分,而不管您正在进行的修订是什么,您最好为这些版本创建单独的git存储库。
举个例子,您希望您的驱动程序位于一个独立的存储库中,而不是您的硬件设计。这是因为软件和硬件之间的接口非常清晰,是一个自然的接缝来分解。此外,相同的驱动程序版本将适用于您的设备的一系列设计阶段。
我不知道你所说的设计的生产和制造版本是什么意思。如果您想要分离开发和稳定的版本,那么您应该可以为这些版本拥有独立的分支。
在git中进行分支和合并是您所能得到的最便宜的,而且在分支之间切换的速度非常快;因此,拥有分支是不受惩罚的。这也是相当容易的樱桃采摘兼容的变化之间的分支。您通常在软件世界中看到的方法(用于发布的分支,加上一个头)运行得相当好。
您可能应该保留演示/测试模块(闪光灯等)以及它们应该演示/测试的模块。这是因为演示耦合接口经常容易发生更改。这样,您将不得不使演示代码与实际设备保持同步,这将有助于设计长期的稳定性。
另外,在FPGA世界中,您通常是在大型设备上进行原型设计,并在受限设备上进行生产。这样,您的模块最终会有两个独立开发的品种。您可能希望将这些变体保存在单独的存储库中,因为它们实际上是不同的实体。在这种情况下,两者之间共享的代码(总是有一些可重用的可移植代码)可以在单独的回购中存在,并且是一个单独的库。特别是如果代码大小证明是正确的话。
然后,您可以使用git子模块将所有上述模块绑定在一起。
发布于 2009-05-19 06:57:39
我想你可以用子模块。我并不100%确定这是如何工作的,但您可以为您创建一个通用代码(例如LED和用户界面,甚至每个代码都可以创建一个回购),并将此回购的副本作为A回购的子模块,以及作为B回购的子模块的另一个副本。
如果您想要对公共部分进行更改,请在您当前工作的单元上这样做。完成后,将更改推送到其他产品的子模块。如果感觉更舒服的话,你也可以在其他地方进行回购。
总之:让您的可重用代码在单独的repos中,这样您就可以重用它。
我不是子模块之王,但我很快就需要和您做同样的事情了。所以我感兴趣的是你会怎么做。
https://stackoverflow.com/questions/881230
复制相似问题