2011-08-23 32 views
0

情况:如何集中管理核心代码库许多iPhone应用程序

我有一些核心功能的基本应用。
我的客户(可能有很多人)都希望在应用商店中拥有自己定制的应用。

如果我有几十个在App Store的应用程序,我想改变一些核心功能,我将不得不更新相应的项目中的每个文件,编译,请通过iTunes的问题连接,上传等。每一个小小的变化都可能需要几天的无心工作。

问题

有没有一种方法,我可以使用一个版本控制系统如Git单独管理的我与核心功能的代码部分,使所有项目都会自动更新,当我提交修改核心文件?

有没有其他方法可以使这个过程更容易管理?

+0

仅供参考,您所谈论的内容称为白色标签:将应用程序的核心功能重新定义/为客户定制。 – memmons

回答

1

我对Xcode的“目标”结构并不熟悉,所以实际上可能是更好的方法。但你绝对可以使用这个git。

也许你想要一个“主”分支,所有的通用的东西生活,然后为应用程序的每个“定制”版的一个分支。

当主服务器发生更改时,您将通过每个自定义分支合并这些更改。然后从每个分公司,您将建立一个产品提交给商店。

在每个分支,你会单独设置的应用程序ID,无论是从一个版本需要在未来,无论按键设置是适当的这个版本,等艺术和文字修改所有这些设置都可以留在本地的定制版本分支。

这是git中完美有效的工作流程。这不是大多数人使用它的原因,但那是因为大多数人都会选择一种产品,而不是很多。

+0

非常感谢这个反馈 - 与@ ravuya的方法相反。我仍在评估... – Mundi

+0

因此,这意味着对于每个客户项目,我都必须执行_reconcile_。我想这也是很多工作,对吧?是否有一种自动化的方式,只有一些文件需要协调,其他文件会自动?也许使用'.gitignore'?我喜欢这种方法是,这些分支都可以透明地在git服务器上看到...... – Mundi

+0

我不熟悉“协调”作为git关键字。这将需要*合并*。并且需要在主分支中进行通用更改,然后将这些更改合并到每个定制版本分支中。您需要的所有工具都可以在git中自动执行。 –

0

您可以使用目标来定义每个客户端的应用程序,这将意味着你可以保持一个代码库,并具有相同的代码库多个应用程序。

这不会解决在AppStore的一部分,你仍必须用手工做的VAR我所知的更新程序。

+0

这听起来像一个很好的开始......但似乎该项目将成为一个很多的怪物项目与许多Default.png,图标文件,甚至可能appDelegates ... – Mundi

+0

是的,但你可以排除/包括资源每个目标,如果它做了我的一些项目,它的工作非常好。你甚至可以为每个目标设置一些类,这样你就可以改变每个目标的工作。 – rckoenes

+0

这是一个非常糟糕的方法。我已经尝试过,项目变得非常脆弱。以这种方式组合2个项目工作正常 - 3开始变得麻烦,之后试图保持项目文件正常工作是一场噩梦。 – memmons

1

另一种选择可能会使用git submodules来组织公共代码,然后将各个单独的项目只需添加您共同的代码作为子模块。

+0

感谢您的反馈 - 我会检查出来。 (需要一些时间。) – Mundi

+0

在* Pro Git *中说:_Submodules允许您将Git存储库作为另一个Git存储库的子目录。因此,我应该为主项目目录中的每个客户端创建一个子目录/子项目,右?然后提交主项目也会保存所有的子库 - 或者不是?或者我必须'.gitignore'他们......这是你提出的设置吗? – Mundi

+0

您如何看待Harkonian的解决方案?它与你的相比如何? – Mundi

3

通常,如果您有需要的iOS重用你要么建立一个静态库,你可以在您的其他项目或一些核心功能(如核心功能包括像资产的东西不能被列入在一个静态库中),你将有一个子项目。不过,在这两种情况下,您都需要确保每个应用项目都与您的核心功能项目存在目标依赖关系,以便始终使用最新更改进行重建。

  1. 创建拥有所有的核心功能和编译,而无需参考客户特定的代码
  2. 创建这个核心框架项目
  3. 一个混帐回购协议在每个应用项目的MundiCoreFramework的Xcode项目使用这个核心功能,将MundiCoreFramework添加为git子模块,并将其作为子项目添加到应用程序项目中。
  4. 无论何时更新核心框架,您都可以为每个应用程序发布git sumodule update并重新编译。
+0

谢谢。我想弄清楚如何评估这些选项。 – Mundi

+0

一个示例项目可能是在这里玩你的选择的最佳方式。据我所知,我们三个提出的三个解决方案都应该有效。这将是最简单的方法来处理。 –

+0

谢谢,会做。 – Mundi

相关问题