Version control 如何在mercurial中将子项目添加到主项目中?
我对mercurial和tortoise是新手,在理解如何处理子项目时遇到了一些问题 我有三个文件夹,分别是UART、SPI和ADC。这些文件夹包含用于微控制器系列的uart、spi和adc的代码。本规范不适用于任何项目,相反,本规范是为任何项目单独设计和开发的。因此,我为每个文件创建了一个存储库,并使用hg对它们进行版本控制 但最近我决定启动一个名为“ProjectA”的项目,它使用ADC和UART。我创建了“projecta”文件夹,创建了一个main.c文件,最后在“projecta”文件夹中创建了一个存储库,添加了main.c文件,并提交了它 我这里的问题是,我想以某种方式将UART和ADC代码添加或链接到我的“Projet A”,而无需手动复制粘贴文件夹,我的意思是,将UART和ADC代码作为独立于“项目A”的子项目处理,并让hg将UART和ADC的最新版本复制到“主”项目。例如,如果UART代码中需要更改,则在UART代码中进行更改,将更改提交到UART项目,并将其“更新”到添加或链接了UART代码的所有项目中的最新版本 我读过: 我找不到我问题的答案。我发现了一个关于子项目的非常简洁、直截了当的教程,但它并没有真正的帮助( ) 你能给我一系列要遵循的步骤吗,或者给我一个到一些教程的链接来完成这个任务吗Version control 如何在mercurial中将子项目添加到主项目中?,version-control,mercurial,mercurial-subrepos,Version Control,Mercurial,Mercurial Subrepos,我对mercurial和tortoise是新手,在理解如何处理子项目时遇到了一些问题 我有三个文件夹,分别是UART、SPI和ADC。这些文件夹包含用于微控制器系列的uart、spi和adc的代码。本规范不适用于任何项目,相反,本规范是为任何项目单独设计和开发的。因此,我为每个文件创建了一个存储库,并使用hg对它们进行版本控制 但最近我决定启动一个名为“ProjectA”的项目,它使用ADC和UART。我创建了“projecta”文件夹,创建了一个main.c文件,最后在“projecta”文件
问候 感谢您在询问之前详细说明您的研究内容;这几天很清爽 我认为您错误地考虑了版本控制库,看看这个答案是否符合您心目中的模型 在我看来,UART、SPI和ADC库在强烈的意义上是“库”:它们为ProjectA这样的调用程序提供服务。它们还可以不经更改地向ProjectB–ProjectZ提供这些相同的功能 如果是这样,那么在单独的存储库中维护库是正确的做法。如果UART更改了它的寄存器,或者我在UART库中发现了一个bug,我希望我的更改能够通过UART库的所有用户反映出来,实现这一点的方法是为UART库建立一个单一的、确定的存储库。该存储库应生成适合您的系统的UART.a或UART.so或UART.dll。该库将在链接时成为ProjectA的一部分。另一种方法是在多个项目存储库中分别使用UART代码的非关联副本,这会导致错误
我不会告诉你,库的生成和与ProjectA的链接几乎和将所有代码放在一个repo中一样简单,但这是
make
和多个目录中的朋友的限制(这是一个众所周知的缺陷)。不过,从DVCS的角度来看,您对存储库的分离似乎是有意义的。像msw一样,我喜欢您解释您已经阅读的内容!我建议阅读
- -我的一个同事写的关于子存储库的指南
- -我写了一个答案,试图解释强耦合子组件可能遇到的一些问题。我不知道您的世界中有什么构建工具,但如果可能,您应该使用一个工具来管理组件之间的依赖关系
- -关于在服务器端保持子回购同步的另一个答案
- 和hg帮助子回购