0

简介:需要帮助来弄清楚如何设置软件仓库和我的开发环境,以便我可以支持多个相关项目。

详细信息: 到目前为止,我有一个仓库,其中只有一个项目 - ProjectA - 机器人版本 A。

我开始研究一个新版本(ProjectB),它在硬件上有一些差异——I/O 端口映射和计时器已经改变。我想继续为这两个项目开发代码。

这意味着 ProjectB 将与 ProjectA 共享一些文件,而一些文件将有所不同。

由于差异是与硬件相关的项目,我正在考虑创建一个公共区域,然后项目特定区域,其中公共区域用于设备独立代码,项目特定区域用于设备相关代码。

差异足够大,我不想在文件中执行#ifdef。有些区别很简单——不同的 I/O 端口映射,有些是全新的模块。

为了使维护更容易,我希望能够比较设备相关代码之间的差异并传播选定的更改。

最后,为了在比较过程中尽量减少我的负担,我想标记我知道没问题的差异,以便在以后的比较中它们不会出现。

帮助!

4

1 回答 1

1

你的直觉很好——你正在尝试不重复代码。这是良好设计和工程的核心。

至于文件布局,目录太深总是很烦人,但这总比太浅要好得多。也许:

<root>
  main/
    projects/
       robot1/...
       robot2/...
       shared1/
       shared2/

(大型存储库甚至比这要深得多。)

至于您如何制作共享代码——您可以使用不同setup.h的或 constants.h 来驱动各种共享库的功能。或者,构建您的共享库,以便在运行时对其进行参数化。

SetupDrivers(0x80020); // address of PIO registers

最后——如果项目真的不同,决定共享代码是否真的是正确的事情。通常是的,但一切都是一个选择。如果您希望手动“比较”您的文件以查找差异,那么让结构保持足够接近以进行比较真的取决于您。config.h上面提到的“每个项目的不同文件”的想法会有所帮助。

如果您使用自己的差异工具(在 python 或其他工具中),您可以使用特殊注释来标记“预期的不同行”。

于 2011-08-28T16:36:41.560 回答