我正在将旧的C / C ++代码库移动到Mercurial。 我有点不清楚存储库结构如何最佳(或至少接近最佳)应该是什么样子,因为我发现的例子是.NET或Java。我的问题主要是处理 VC ++目录,我们在我的时间之前已经使用了很多。
currently, on disk:
\DEV
\include
\source
\lib
\static-link1.lib
\static-link2.lib
\static-link3.lib
...
\projects
\projA
\projB
\projC
...
\lib1-src
\lib2-src
\lib3-src
...
以下是我可以看到我们如何在不做任何思考的情况下做到这一点,但我可以预见在链接期间出现一些版本/依赖性问题(链接到旧的.lib)。签出时,\source
,\include
和\static-libs
在此示例中将是旧的全局 VC ++目录。
mercurial (alternative #1):
\repo: include
\repo: source
\repo: lib1-src
\repo: lib2-src
\repo: lib3-src
...
\repo: static-libs
\static-link1.lib
\static-link2.lib
\static-link3.lib
...
\repo: projA-prod
\repo: projA-dev
\repo: projB-prod
\repo: projB-dev
\repo: projC-prod
\repo: projC-dev
...
替代#2。这会更好吗?我是否可以进入subrepo并在subrepo上进行拉/更新/合并,如果我唯一想做的就是用新版本的lib做一个新的生产版本的某个项目?这个替代方案实际上删除了全局\lib
目录并使其成为每个项目,这使得它更有弹性,希望如此。另一方面,检查已编译的库会觉得非常错误。
mercurial (alternative #2):
\repo: include
\repo: source
\repo: static-libs (only for subrepos)
\repo: projA-prod
\subrepo: static-libs
\repo: projA-dev
\subrepo: static-libs
\repo: projB-prod
\subrepo: static-libs
\repo: projB-dev
\subrepo: static-libs
\repo: projC-prod
\subrepo: static-libs
\repo: projC-dev
\subrepo: static-libs
...
\repo: lib1-src
\repo: lib2-src
\repo: lib3-src
...
还有其他想法吗?你怎么做呢?在过去的4年里,我主要使用.NET,我不再喜欢这些全局\source
/ \include
文件夹,但我不知道如何完全摆脱它们。绝对可以将源切换一点或将一些代码移到libs,从而最大限度地减少那些.h / .cpp文件中的项目间依赖性,但仍需要一些简单的代码重用。
其他问题:我可以看到\include
和\source
甚至位于SAME存储库中,因为它们几乎是锁定步骤,你是如何做到的?