KON*_*ONG 7 iphone xcode objective-c
我想问一下您的做法,以便让您的第三方图书馆易于更新.
在我的iPhone项目中,我使用了很多第三方库(如TouchXML,JSON,RegexKit,YAJL,MGTwitterEngine ......).他们中的大多数存储在GitHub中,他们的版本,特别是MGTwitterEngine,变化非常快(因为添加新功能,修复bug,更改服务器(如Twitter)响应格式......).
有时,我忘记更新(也不想更改稳定版本)然后我的项目因为过时的库而出现错误.
当我因为旧库而得到一个bug.我经常去Github,下载新版本,然后需要更改很多代码.因为下载新版本意味着我从一个非常老的版本快进到最新版本.我认为如果我更频繁地更新库,那就不那么痛苦了.
你完成这项任务的方法是什么?
现在是2012年,自从提出这个问题以来,已经出现了两个项目,旨在使管理iOS代码中的项目依赖性变得更加容易:CocoaPods和VendorKit.两者都受到Ruby依赖管理器Bundler的启发.CocoaPods可能是最成熟和最活跃的项目,但两者都在增加牵引力.
Git子模块在组织项目和依赖项方面提供了很多帮助,但是让搜索路径和链接器标记正确仍然是一件麻烦事,更不用说如果依赖关系中断了什么是错误的.处理A和B都依赖于C的情况也很难处理,其中A是您自己的项目,B和C是依赖项.所以我现在的建议是使用其中一个项目并通过为各种库编写规范来支持它们.
还有一个鲜为人知的Kit,在Haskell中实现.值得一试.
你研究过git 子模块吗?
我用它们来完成这项任务。我们有一个辅助类的存储库。然而,每当我们进行添加和改进时,我们都希望这些改进能够级联到我们的所有项目——因此,我们将该帮助程序存储库设置为每个项目存储库中的子模块。
在存储库的根目录中尝试以下命令:
git submodule add ssh://url/to/external/library.git local/path
Run Code Online (Sandbox Code Playgroud)
这应该执行以下步骤(从上面的 URL 逐字获取):
- 将子模块克隆到当前目录下,并默认检出主分支。
- 将子模块的克隆路径添加到
.gitmodules文件中,并将该文件添加到索引中,准备提交。- 将子模块的当前提交 ID 添加到索引中,准备提交。
然后您可以使用
git submodule update
Run Code Online (Sandbox Code Playgroud)
命令使内容保持最新。
另外,作为旁注,如果您正在做我正在做的事情(例如,直接更改子模块存储库),您需要转到子模块的根存储库目录并在提交超级项目之前首先提交这些更改。这是因为 git 会跟踪子模块的版本(智能),因此如果您首先提交超级项目,您将存储对子模块存储库中尚未提交的更改的引用。任何尝试克隆您的超级项目的人都会收到错误。
| 归档时间: |
|
| 查看次数: |
566 次 |
| 最近记录: |