GitHub:管理不同版本应用程序的最佳方法是什么?

时间:2013-05-23 11:58:54

标签: ios git version-control github branch

我有一个有两个不同版本的iOS应用程序,基本上一个是在App Store(在线版本)上发布的,另一个是在内部发布(离线版本)。

我正在寻找的是在GitHub上发布我的代码的最佳方式,以便将来可以轻松更新两个Xcode项目,因为这两个版本的代码只有一部分不同。

据我所知,分支被合并为'master',但在我的情况下,两个版本需要分开,只需要进行一些更改即可合并。

我曾尝试为我的GitHub存储库创建第二个分支,但我无法弄清楚这是否是保持两个项目一起更新的最简单方法,还是在GitHub上创建两个单独的存储库会更好? / p>

感谢您的反馈!

2 个答案:

答案 0 :(得分:1)

有几种方法可以实现您想要的效果。对应用程序的不同版本使用多个repos或分支不是一个好选择。代码库可能会在时间上发生分歧并变得非常难以维护。

要解决此问题,我们更倾向于在XCode中使用单独的目标配置。

创建应用新版本的最简单方法:

  • 复制当前目标
  • 将其重命名为' XXX in-house'而不是' XXX copy' (可选)
  • 将包标识符更改为与原始目标不同
  • 重命名' XXX copy-Info.plist'将文件更改为更好的名称,并从目标的构建设置(可选)更改Info.plist引用

现在,您可以从目标的配置窗格更改任何配置。

为了区分运行的应用程序版本,您可以在目标的构建设置中定义宏(例如FREE = 1),或者您可以在代码中检查当前标识符,应用程序名称等以设置当前版本

typedef enum {
    QWEAppStore,
    QWEAppStoreFree,
} QWEAppVersion;

#ifdef FREE
    #define QWECurrentVersion QWEAppStoreFree
#else
    #define QWECurrentVersion QWEAppStore
#endif

然后在你的课程中使用它,如:

- (IBAction)buttonTapped:(id)sender
{
    if (QWECurrentVersion == QWEAppStore) {
        // Do something
    } else {
        // Do something else
    }
}

答案 1 :(得分:0)

拥有两个git repo将很难管理。

典型的工作流程是拥有3个分支

主 应用商店 内部

当您进行代码更改时,您需要将其推送到appStore和内部分支。

这是一个示例项目,在一个git repo中有许多不同的发行版本

https://github.com/adaptivecomputing/torque