VC ++目录的Mercurial存储库结构

时间:2010-12-11 16:52:43

标签: visual-c++ mercurial include-path repository-design

我正在将旧的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存储库中,因为它们几乎是锁定步骤,​​你是如何做到的?

0 个答案:

没有答案
相关问题