在用户之间共享Xcode库

时间:2014-04-29 23:54:34

标签: ios objective-c xcode git

我正在寻找分享'#34;普通" Xcode项目涉及多个应用程序的多个开发人员。一位开发人员将致力于#34;普通" Xcode项目,而另一个开发人员将处理一个项目,该项目将使用公共代码Xcode项目中的源代码。

我遇到的问题是如何使用Xcode和Git进行设置,以便当公共代码库的开发人员进行更改时,使用该库的开发人员将不会删除并重新添加Xcode项目,或者失去工作。

我已经查看了一些使用Git子模块的文档,但围绕该主题及其实用性存在很多争议。我们最好只拥有一个存储库,其中包含所有项目的所有代码,这样每个人都可以在同一个地方签入/签出?

感谢您的建议和指示!

2 个答案:

答案 0 :(得分:1)

没有"最好的方式"在软件开发中。任何问题总会有很多解决方案。诀窍在于找出最适合您的解决方案。在他的案例中,有许多因素需要考虑 - 你的开发人员喜欢如何工作,他们有什么样的经验和背景,你想如何管理代码等等。

我认为您需要考虑一些解决方案。选择一个并尝试一下,但如果你发现它无法正常工作或黑客攻击以满足您的需求,请不要害怕改变。

  1. 一个回购。通常不被认为是最佳解决方案,因为它限制了在其他项目上重用代码的能力。在XCode中,您最终会遇到许多构建目标和高度复杂的构建。这很快就会变得无法管理。也往往会使版本控制变得困难,并且可能会很快破坏。

  2. 多个repos和静态库。这有很多变化。回购可以由Git独立管理,也可以使用子模块。我会认真考虑将代码分解为构建静态库的项目。使用XCode工作区,您可以同时打开许多项目,并将它们排列为兄弟项目或嵌套子项目。这在很大程度上取决于您想要构建它们的内容和方式。使用Git子模块的优点是子模块可以有效地进行版本控制,这意味着对静态库项目进行更改不会破坏正在使用的所有内容。使用Git子模块的缺点是它们(恕我直言)不是Git中用户最友好的部分,需要一些时间来适应。一个好的Git客户端在这方面最有用。 Sourcetree是免费的,但(再次恕我直言)Tower更容易使用,并且比Sourcetree更好地处理子模块。

  3. 使用Cocoapods。 Cocoapods就像在Xcode中使用Maven或Ant一样。它使得操作变得快速而容易,并自动处理依赖关系。然而,它也与XCode项目文件混淆,通常需要手动干预,添加您可能不需要的其他编译,并且取决于您如何设置构建,可能会妨碍。弄清楚如何控制它与项目文件一起播放的方式也需要一些时间。很多人都喜欢Cocoapods,因为它最初很容易使用,并且不需要Git Submodules所需的技术知识。就个人而言,从长远来看,我不确定将Java依赖管理思想引入Xcode是一个好主意。

答案 1 :(得分:0)

我们共享公共项目/库的方式是使用私有Cocoapods。它不是纯粹的git,但cocoapods确实使用git。您可以阅读有关如何设置私有podspec存储库的官方文档:http://guides.cocoapods.org/making/private-cocoapods.html

关于如何设置私人podspec回购like this one

,还有许多可能更简单的解释。