iphone:让我的第三方库保持最新的良好实践?

iphone:让我的第三方库保持最新的良好实践?,iphone,objective-c,xcode,Iphone,Objective C,Xcode,我想了解一下您的做法,以使您的第三方库轻松保持最新 在我的iPhone项目中,我使用了很多第三方lib(比如TouchXML、JSON、RegexKit、YAJL、mgtwitternegine……)。其中大部分存储在GitHub中,它们的版本,特别是MGTwitterEngine,变化非常快(因为添加了新功能、修复了bug、更改了服务器(如Twitter)响应格式…) 有时,我忘记了更新(也不想更改稳定版本),然后我的项目因为过时的库而出现错误 当我因为旧的图书馆而被窃听时。我经常去Githu

我想了解一下您的做法,以使您的第三方库轻松保持最新

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

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

当我因为旧的图书馆而被窃听时。我经常去Github,下载新版本,然后需要修改很多代码。因为下载新版本意味着我要从一个非常旧的版本快速前进到最新的版本。我想如果我更频繁地更新这个库的话,痛苦会少一些

您对此任务的方法是什么?

您研究过吗

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

从存储库的根目录中尝试以下命令:

git submodule add ssh://url/to/external/library.git local/path
这应该执行以下步骤(从上面的URL逐字进行):

  • 克隆当前目录下的子模块,默认情况下签出主分支
  • 将子模块的克隆路径添加到
    .gitmodules
    文件并添加 将此文件添加到索引,准备提交
  • 将子模块的当前提交ID添加到索引,准备提交
然后您可以使用

git submodule update
命令以使内容保持最新


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

现在是2012年,自从提出这个问题以来,出现了两个项目,旨在使iOS代码中的项目依赖关系管理更加容易:和。两者的灵感都来自Ruby依赖关系管理器。CocoaPods可能是最成熟和最活跃的项目,但两者都在获得吸引力

Git子模块在组织项目和依赖项方面有很大的帮助,但是要正确地获取搜索路径和链接器标志仍然是一件很麻烦的事情,更不用说找出依赖项中断时的错误了。也很难处理A和B都依赖于C的情况,A是您自己的项目,B和C是依赖项。因此,我的建议是,此时此刻,使用其中一个项目,并通过为各种库编写规范来支持它们


还有一种不太为人所知的方法,在Haskell中实现。值得一看。

三票无答。为什么?你能发表一些评论吗?因为其他人(包括我)也对你的问题感兴趣,但还没有人有答案。如果我们没有答案,就提出想法,并通过评论进行讨论:)我们能写一个脚本来做这件事吗?我会尝试这种方法。非常感谢你,phooze。+1 git子模块绝对是最好的选择。我们经常使用这种方法。为了确保所有的设置都正确设置(搜索路径,…),我们使用自定义框架。