首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iphone:让我的第三方库保持最新的好做法?

iphone:让我的第三方库保持最新的好做法?
EN

Stack Overflow用户
提问于 2010-07-16 12:36:13
回答 2查看 589关注 0票数 7

我想问一下您的做法,使您的第三方库容易地更新。

在我的iPhone项目中,我使用了相当多的第三方库(比如TouchXML、JSON、RegexKit、YAJL、MGTwitterEngine……)。其中大部分存储在GitHub中,它们的版本,特别是MGTwitterEngine,变化很快(因为添加了新功能,修复了错误,改变了服务器(如推特)的响应格式……)。

有时,我忘记更新(也不想更改稳定版本),然后我的项目就会因为过时的库而出现错误。

当我遇到一个bug时因为旧的库。我经常去Github,下载新版本,然后需要修改很多代码。因为下载新版本意味着我从一个非常旧的版本快进到最新的版本。我认为如果我更频繁地更新库,就不那么痛苦了。

你对这项任务的方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-16 20:46:34

你调查过git submodules吗?

我使用它们来完成这项任务。我们有一个助手类的存储库。但是,每当我们进行添加和改进时,我们都希望将这些改进级联到我们所有的项目中--因此,我们将助手存储库设置为每个项目存储库中的一个子模块。

在存储库的根目录中尝试执行以下命令:

代码语言:javascript
复制
git submodule add ssh://url/to/external/library.git local/path

这应该执行以下步骤(从上面的URL逐字获取):

  • 克隆当前目录下的子模块,并在默认情况下签出主分支。
  • 将子模块的克隆路径添加到.gitmodules文件,并将此文件添加到索引,准备将子模块的当前提交ID committed.
  • Adds到索引,准备提交。

然后,您可以使用

代码语言:javascript
复制
git submodule update

命令以使内容保持最新。

另外,作为附注,如果您正在做我正在做的事情(例如,对子模块存储库进行直接更改),您需要转到子模块的根存储库目录,并在提交超级项目之前首先提交这些更改。这是因为git会跟踪子模块的版本(smart),所以如果您首先提交超级项目,您将存储对尚未提交到子模块存储库的更改的引用。任何试图克隆你的超级项目的人都会收到一个错误。

票数 4
EN

Stack Overflow用户

发布于 2012-04-23 22:09:39

现在是2012年了,自从这个问题被提出以来,已经出现了两个项目,它们旨在使在iOS代码中管理项目依赖项变得更加容易:CocoaPodsVendorKit。两者都受到Ruby依赖项管理器Bundler的启发。CocoaPods可能是最成熟和最活跃的项目,但这两个项目都在获得吸引力。

Git子模块在组织您的项目和依赖关系方面对有很大帮助,但要获得正确的搜索路径和链接器标记仍然是一件麻烦的事情,更不用说如果依赖关系破坏了就找出问题所在。这也很难处理A和B都依赖于C的情况,其中A是您自己的项目,B和C是依赖项。因此,我的建议是,在这个时间点上,使用这些项目之一,并通过为各种库编写规范来支持它们。

还有一个鲜为人知的Kit,它是用Haskell实现的。值得一查。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3261962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档