gpt4 book ai didi

git - Xcode 4 工作区有两个相互依赖的项目 : should I also use git submodule?

转载 作者:太空狗 更新时间:2023-10-29 13:39:09 25 4
gpt4 key购买 nike

我正在开发一个 iOS 应用程序,并将代码库分为两个独立的项目:一个用于 Web 服务的客户端库,以及一个依赖于客户端库的应用程序项目。

这两个项目都已添加到单个 Xcode 工作区,并适本地声明了依赖关系。

每个项目都有自己的 git 存储库。目前,我已将这两个项目 checkout 到两个单独的目录中,并且我独立管理彼此独立的两个 git 存储库。目前唯一定义这两段代码之间依赖关系的地方是在应用程序的 Xcode 项目中。

但是,我想知道是否应该将客户端库 git 存储库添加为 git submodule应用程序的存储库。这在概念上感觉是正确的,但我之前没有使用过 git 子模块,我想知道在 Xcode 中使用这种方法是否有任何问题?

(我可以找到很多关于如何使用 Xcode 工作区来管理项目间依赖关系的博客文章,以及其他地方的大量关于 git 子模块的文档,但我找不到一个经过验证的工作流程的帐户一起使用。如果你知道其中一个,请发布链接!)

最佳答案

我以前参与过的项目都是这样做的,都使用以下布局:

 * app-workspace
* App.workspace
* library [submodule]
* Library.xcodeproj
* library sources
* app [submodule]
* App.xcodeproj
* app sources

因此工作区了解项目和构建方案。工作区的 git 存储库知道包含项目的子模块。

在实践中,要使顶层的子模块定义保持最新需要付出很多努力,所以我们通常会在子模块的主分支上工作。当添加重要更改时,将特定版本提交到工作区的子模块:如果 CI 系统是从顶级项目构建的,这种情况并不少见。

当然,对于单元测试,您可以将 CI 独立指向每个子模块,只有集成测试才需要整个工作区。这里要记住的一个重要步骤——也是我偶尔会搞砸的一步——是你应该只在将提交推送到 CI 和开发人员存储库的共享来源后,才将子模块定义更新为特定的提交。如果您忘记了这一点,当父项目引用他们没有的子模块的提交时,您可能会冒着其他人的 checkout 中断的风险。

您可能在与 Xcode 交互时遇到问题的地方是定义您的构建方案。我最近采用的方法是使用方案编辑器将我要使用的方案定义为共享(而不是每个用户),并在顶层的工作区中定义,而不是在子模块的项目中定义.完成后,将那些方案定义提交给 git,关闭自动方案生成。现在,您所有的开发人员和 CI 系统都同意如何构建您的产品。

关于git - Xcode 4 工作区有两个相互依赖的项目 : should I also use git submodule?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8787956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com