Git 椰子荚是如何工作的

Git 椰子荚是如何工作的,git,dependency-management,cocoapods,Git,Dependency Management,Cocoapods,我在我的一些项目中使用了CoCoapod。使用我的依赖项/开源框架保持更新既酷又容易 但是我对椰子荚的内部运作有一些怀疑 在我们的pod文件中,我们只给出pod的名称,有时还提供版本,如 pod "AFNetworking" , "1.3.2" 然后它正确地查找并克隆AFO。这是怎么工作的?ruby gems如何知道Github中的实际存储库。 POD是否仅适用于Github?(因为我在Github上看到了只用于框架的pod)。 如果我们可以在Github之外的其他地方(例如从Bitbuket

我在我的一些项目中使用了CoCoapod。使用我的依赖项/开源框架保持更新既酷又容易

但是我对椰子荚的内部运作有一些怀疑

在我们的pod文件中,我们只给出pod的名称,有时还提供版本,如

pod "AFNetworking" , "1.3.2"
然后它正确地查找并克隆AFO。这是怎么工作的?ruby gems如何知道Github中的实际存储库。 POD是否仅适用于Github?(因为我在Github上看到了只用于框架的pod)。
如果我们可以在Github之外的其他地方(例如从Bitbuket)使用pod作为依赖项,那么我们如何将该pod添加到我们的pod文件中呢?

CoCoCoaPods在幕后做了大量工作,使您所谈论的一切都能正常工作。在相对较高的层次上,实际的“pod”是在Github上的回购协议中管理的。这是第三方图书馆供应商提交其“POD”以与CoCoaPOD合作的地方。您会注意到,如果使用命令行工具和
Pod search AFNetworking
搜索Pod,您将看到所有与搜索词匹配的可用Pod


就Github和其他站点而言,即使充满CocoaPods规范的存储库存在于Github上,CocoaPods本身也只使用普通的旧Git从给定的存储库中提取源代码。因此,您可以从任何站点上托管的任何git repo生成规范。我们还支持svn、mercurial和简单的旧http。如果您对规范的总体工作方式感兴趣,您可以查看中的一些规范,您可以在本地计算机上从
~/.cocoapods/repos/master
打开它们,或者直接从命令行使用
pod spec edit AFNetworking
编辑它们。

cocoapods

CocoaPods
是一种集中的依赖关系管理。它通过
Podfile
读取依赖项和版本<代码>吊舱项目将在工作区中创建<代码>CocoaPods实现了
隐式依赖性
方法:

  • 源代码
  • 关闭的代码
在客户端,您有一个
Podfile
Podfile
的核心是一个pod:

  • 名字
  • 版本-
Cocoapods
读取
pod文件
时(在
pod安装
pod更新
期间),将创建隐式和显式依赖关系图。在这之后,管理员应该将每个源代码查找到一个
.podspec
,该文件通常托管在某个主机中。这就是为什么
Cocoapods
集中化的原因。框架的开发人员负责创建并支持该文件
.podspec
描述了有关框架的元信息,如依赖项、子服务器等。它的主要部分是
source
,告诉
Cocoapods
源代码的托管位置,这些源代码将下载到
Pod
项目中
Cocoapods
使用workspace自动化构建过程并管理隐式依赖项
Cocoapods
将所有必要的信息设置到您的消费者项目中(如搜索页面等)。当您构建消费者项目Xcode时,将吊舱拉到一起并组装在一起

规范或规范确定模块名称、部署版本等常规数据。规范可以包含子规范或子规范,以便对源文件进行更精细的控制。每个规范或子规范都可以有依赖关系。默认情况下,如果未指定
default\u subsec

模块名称将在以下情况下更改:

1. <module_name>.podspec
2. <spec_variable>.name = "<module_name>"
//or
1. <spec_variable>.module_name = '<module_name>'
1。播客
2.name=“”
//或
1.模块名称=“”





非常感谢。还有一个疑问。你能告诉我如何通过cocoapodsCheck添加我的框架吗?这是一个很好的方法来实现itok,但是,我如何将.podspec添加到规范repo中呢。我还看到每个框架中都有一个.podspec文件。它会自动更新到spec repo吗?啊,框架我以为你指的是
.framework
。您需要使用另一个作为示例创建
.podspec
文件,并向specs repo提交pull请求。然后您就可以在
pod文件中使用它了
另请参见