假设我正在创建一组产品,它们共享大部分代码但不是全部(例如:具有多个前端的应用程序:命令行、Windows/MAC/Linux GUI、移动(最小)GUI、Web GUI 等.)
此外,可以说共享代码不能轻易拆分和“库化”。
我正在考虑为不同的产品使用 mercurial 命名分支(例如分支:CLI、Windows、MAC、Linux、Mobile、Web)或代码中的编译标志(例如#if (FRONT_END == CLI) #elif (FRONT_END == WEB) ...
)。
我对这两种方法都不满意。以下是我的不满:
命名分支:
- 如果我更改一段共享代码,我需要将它与所有分支合并。是否有一个 hg 命令可以(半)自动执行此操作?
- 要查看某个特定功能如何在所有分支中实现并不容易/快速(可视化代码某个区域的差异)
编译标志:
- 代码混乱
- 没有隐式的分支修订历史。必须手动进行(提交时会显示哪些产品受到影响)
你能建议:
- 减轻我的疑虑的方法?
- 不同的观点
- 结合这两种方法的优雅方法
谢谢