首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要一个新项目的git回购布局建议

需要一个新项目的git回购布局建议
EN

Stack Overflow用户
提问于 2009-05-19 06:25:01
回答 2查看 1.2K关注 0票数 2

我正在做一个新的项目,我计划把它保存在一个git存储库中。我知道我会如何在CVS中这样做,但我对git有点陌生,可能需要一些建议。

该项目是两个嵌入式设备的固件,它们相互通信,并打包成一对。对于这两种设备,代码都有一个生产变体和一个制造变体。两个设备项目都有许多子/兄弟项目,用于执行各种硬件比特(闪烁LED等)或硬件相关的代码比特(驱动等)。大多数代码都是通用的。

我也有一个要求,能够重新生产和制造固件相互独立,以防止一个改变,从一个发送回另一个通过验证。

下面是我现有的目录布局。它是有机生长的,在我知道我会使用git之前,它基本上已经被放置下来了。如果有更好的方法,我不反对重组整件事。

  • include
  • src
  • DeviceA
    • production
    • manufacturing
    • blink
    • buttons
    • ...

  • ProjectRoot

代码语言:javascript
复制
- DeviceB  
    - production
    - manufacturing
    - blink
    - buttons
    - ...

我很想把生产和制造放在分支机构上,但我通常在给定的一天内都从事这两方面的工作,而git只允许一个分支一次活动。然后我就不知道该如何处理眨眼,按钮等,因为它们不是真正的制造或生产。有什么建议吗?

Clarifications:

  • (代码的制造版本)在生产线上用于测试硬件。生产代码是在硬件通过测试站之后加载的,并且是发送给客户的。这两种代码至少有75%的相似之处,但它们必须是独立的,这样我就可以修复生产代码中的一个bug,而不必停止生产line.
  • Because DeviceA和DeviceB是一对代码,这两个代码集都被标记并以相同的发布版本号同时发布。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-05-19 07:00:22

我用git来管理硬件/软件的协同设计,所以我可能有一些有用的建议。

经验法则是,如果您的设计中有可以相互操作的部分,而不管您正在进行的修订是什么,您最好为这些版本创建单独的git存储库。

举个例子,您希望您的驱动程序位于一个独立的存储库中,而不是您的硬件设计。这是因为软件和硬件之间的接口非常清晰,是一个自然的接缝来分解。此外,相同的驱动程序版本将适用于您的设备的一系列设计阶段。

我不知道你所说的设计的生产和制造版本是什么意思。如果您想要分离开发和稳定的版本,那么您应该可以为这些版本拥有独立的分支。

在git中进行分支和合并是您所能得到的最便宜的,而且在分支之间切换的速度非常快;因此,拥有分支是不受惩罚的。这也是相当容易的樱桃采摘兼容的变化之间的分支。您通常在软件世界中看到的方法(用于发布的分支,加上一个头)运行得相当好。

您可能应该保留演示/测试模块(闪光灯等)以及它们应该演示/测试的模块。这是因为演示耦合接口经常容易发生更改。这样,您将不得不使演示代码与实际设备保持同步,这将有助于设计长期的稳定性。

另外,在FPGA世界中,您通常是在大型设备上进行原型设计,并在受限设备上进行生产。这样,您的模块最终会有两个独立开发的品种。您可能希望将这些变体保存在单独的存储库中,因为它们实际上是不同的实体。在这种情况下,两者之间共享的代码(总是有一些可重用的可移植代码)可以在单独的回购中存在,并且是一个单独的库。特别是如果代码大小证明是正确的话。

然后,您可以使用git子模块将所有上述模块绑定在一起。

票数 2
EN

Stack Overflow用户

发布于 2009-05-19 06:57:39

我想你可以用子模块。我并不100%确定这是如何工作的,但您可以为您创建一个通用代码(例如LED和用户界面,甚至每个代码都可以创建一个回购),并将此回购的副本作为A回购的子模块,以及作为B回购的子模块的另一个副本。

如果您想要对公共部分进行更改,请在您当前工作的单元上这样做。完成后,将更改推送到其他产品的子模块。如果感觉更舒服的话,你也可以在其他地方进行回购。

总之:让您的可重用代码在单独的repos中,这样您就可以重用它。

我不是子模块之王,但我很快就需要和您做同样的事情了。所以我感兴趣的是你会怎么做。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/881230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档