使用Git维护共享代码库

3

如果我在术语上使用了不恰当的词汇,请提前原谅。我目前在git中维护一个代码库,用于发布Mac应用商店中的应用程序。由于各种原因,我现在也在考虑发布非MAS版本。

显然,MAS和非MAS版本将共享95%的公共代码库。实际上,它们唯一不共享的部分将是收据检查(MAS版本)和许可证密钥+自动更新(非MAS版本)。

这就带来了我的问题的要点 - 做到这一点的“正确”方式应该是在git中维护两个单独的分支?我如何轻松地确保这两个分支保持同步,而不必担心在两个版本之间泄漏收据检查和许可证密钥代码?那么Xcode项目管理呢?假设我向MAS项目添加一个文件,有没有一种简单的方法使它显示在非MAS项目中?

如果需要任何澄清,请告诉我。

提前感谢。

2个回答

2

我不会使用不同的分支,您希望MAS版本2.0和非MAS版本2.0尽可能具有相同的功能。我只会有两个目标,并在MAS目标的调试和发布配置中定义MAC_APP_STORE=1。95%的代码将成为两个目标的成员,但许可证和自动更新代码文件仅成为非MAS目标的成员。一些公共代码中需要有一些条件编译,如下所示:

#ifdef MAC_APP_STORE
    ...
#else
    ...
#endif

1
对于一组有限的更改,这比处理多个存储库更好,正如我的答案所建议的那样。所以+1。 - VonC
@VonC 我倾向于不同意。这将使用代码,而配置管理则是解决方案。 - boutta
@GayleDDS 感谢您的创新思维。虽然其他人指出它可能不适用于每种情况,但对于我的使用情况来说,这绝对是完美的。 - Mathew Eis

1
如果您可以将不同的文件隔离在一个子目录中,那么您可以考虑使用子模块(请参阅Pro Git书籍章节)进行工作。
这样做有以下优点:
  • 您只需要维护包含95%公共代码的父存储库的一个分支
  • 您可以在子模块存储库中维护与给定版本相关的特定文件的分支。

子模块相对于简单符号链接的好处是什么?我的意思是,一个存储库用于所有共享代码,而MAS和非MAS文件则分别使用两个不同的存储库。在本地文件系统中,更改符号链接(即ln -s),以便根据您想要处理的项目将其指向MAS或非MAS存储库。 - Gui LeFlea

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接