Mercurial分支与编译标志:一个代码库 - 多个产品

时间:2011-01-07 08:21:02

标签: mercurial compiler-flags

假设我正在创建一组共享大部分代码而非全部代码的产品(例如:具有多个前端的应用程序:命令行,Windows / MAC / Linux GUI,移动(最小)GUI,网页GUI等)

此外,假设共享代码不能轻易拆分和“库存化”。

我考虑为不同的产品(例如分支机构:CLI,Windows,MAC,Linux,移动设备,Web)使用mercurial命名分支或代码中的编译标记(例如#if (FRONT_END == CLI) #elif (FRONT_END == WEB) ...)。

我对这两种方法都不满意。这是我的不满:

命名分支:

  • 如果我更改了一段共享代码,我需要将其与所有分支合并。 是否有一个hg命令自动执行此操作(半)?
  • 不容易/快速地查看特定功能如何在所有分支中实现(可视化代码的一个区域中的差异)

编译标志:

  • code clutter
  • 没有隐含的分支修订历史记录。必须手动执行(提交指示哪些产品受影响的消息)
你可以建议:

  • 减轻我的疑虑的方法?
  • 不同的观点
  • 优雅的方式结合2种方法

感谢名单

1 个答案:

答案 0 :(得分:0)

我想,我有最好的策略。

前言:我强烈地,非常讨厌 ifdef'ed spaghetti-code


指定分支机构并不差,但管理层有缺点,是的。经过一些尝试和失败后,我停止了“单代码库+多重MQ补丁”的想法。使用新的Mercurial,您可以拥有多个队列,您可以使用受保护的补丁...因此您有一个香草代码 - 许多(任何)目标

未来阅读:“Mercurial:The Definitive Guide”,Chapter 12. Managing change with Mercurial QueuesChapter 13. Advanced uses of Mercurial Queues