【问题标题】:GitHub: What is the best way to manage different versions of an app?GitHub:管理不同版本的应用程序的最佳方式是什么?
【发布时间】:2013-05-18 18:40:21
【问题描述】:

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

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

据我了解,分支被合并到“master”,但在我的情况下,两个版本都需要分开,只需要合并一些更改。

我尝试为我的 GitHub 存储库创建第二个分支,但我不知道这是让两个项目同时更新的最简单方法,还是在 GitHub 上创建两个单独的存储库更好?

感谢您的反馈!

【问题讨论】:

    标签: ios git version-control github branch


    【解决方案1】:

    有几种方法可以实现您想要的。为不同版本的应用程序使用多个存储库或分支不是一个好的选择。代码库可能会随着时间的推移而出现分歧,并且变得非常难以维护。

    为了解决这个问题,我们更喜欢在 XCode 中使用单独的目标配置。

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

    • 复制当前目标
    • 将其重命名为“内部 XXX”而不是“XXX 副本”(可选)
    • 将包标识符更改为与原始目标不同
    • 将“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
        }
    }
    

    【讨论】:

    • 感谢您的详细解答!这绝对看起来是最好的解决方案。但是,我的离线版本使用了我的应用程序包中的许多附加图片和声音。在在线和离线版本之间切换时,我应该手动添加和删除那些额外的文件,还是有什么方法可以根据所选宏使资源文件夹成为可选?
    • 您可以从资源的Target Membership 窗格中选择要添加到目标的资源。您也可以在目标配置的 Build Phases > Copy Bundle Resources 部分中管理它们。
    • 这是一个很好的解决方案,但需要注意的是 - 如果我使用枚举,我会收到“代码永远不会被执行”的警告。检查版本的更好方法是使用#ifdef FREE... #endif 或任何你的宏
    【解决方案2】:

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

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

    主人 应用商店 内部

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

    这是一个示例项目,它在一个 git repo 中包含许多不同的发布版本

    https://github.com/adaptivecomputing/torque

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-10
      • 2015-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      • 2012-06-22
      相关资源
      最近更新 更多