1

我正在编写一个 iOS 应用程序,它以免费版本开始,并且与许多应用程序一样,在付费应用程序中或通过应用程序内购买提供扩展功能。

我目前使用 mercurial 作为免费应用程序的版本控制,现在我们也想发布付费应用程序。我想知道是否有任何方法(理想情况下,尽管不一定,使用 mercurial)来保持它们共享代码库的主要部分,以便一个错误修复自动影响另一个,但显然将差异分开。

或者,是否有一种使用分支或类似方法可以轻松手动合并更改?

我试着在网上搜索,但我不确定我是否找不到正确的关键词,或者这真的不可能。另外,我从来没有完全理解过分支。

4

2 回答 2

2

您至少有两个模型

基于分支

两个分支

  • 从您的主线分支 PAID 分支(默认分支)
  • 添加常用功能和错误修复/更改为默认值
  • 合并默认PAID
  • 在 PAID 分支中开发 PAID-only 功能
  • 从 2 个分支的负责人发布版本

每个任务的分支

  • (同上)
  • 在单独的命名分支中编码每个任务
  • 将完成的分支合并到单个(PAID)或两个产品的分支

单个分支中的 MQ 补丁

  • 添加、启用 MQ 扩展
  • 像以前一样在存储库的变更集中存储核心(免费版本)
  • 将 PAID 更改和添加添加为单独的 MQ 补丁
  • 将常见变更作为变更集实施
  • 为仅付费功能添加/编辑 MQ 补丁
  • 未应用所有补丁的存储库将是免费版本,所有已应用 - 已付费。
于 2013-01-23T16:02:49.763 回答
2

我假设您将付费和免费版本都保密。

为什么不将所有内容放在一起并通过具有特定标志的编译器区分两者?因此,“制作免费版”和“制作付费版”会有所不同。

如果坚持将付费版和免费版的历史分开,我认为使用“免费”、“付费”和“共享”三个分支。不断将“共享”合并到其他两个(或如Lazy Badger建议的那样,使用“仅付费”分支)。

据我所知,Python 使用前向移植,他们的实践应该会有所帮助。

于 2013-01-24T23:25:23.530 回答