Podfile.lock内 Spec CHECKSUMS 改变的整个过程【翻译】

本文翻译自:Why does my team's Podfile.lock Podspec checksums change

在开发我们最快的移动应用程序 Eigen 时,使用CocoaPods,并不会将 Pods目录保留在源代码控制下 。 当开发人员的Pods具有不同的SHA 校验和(CHECKSUMS)时,这有时会导致Podfile.lock内的有趣的数据流失。 这很奇怪,怎么会这样?

Lockfiles 是什么?

首先,为确保我们谈论同样的事儿,这是我们的Podfile.lock。在pod安装中使用lockfile来确保您的团队的所有成员具有彼此完全相同的库版本。另外,Podfile文件:

platform :ios, '9.3'

pod 'AFNetworking/Serialization', '~> 3.0'

target 'MyApp'

运行pod安装的开发人员将获得最新的3.x版本,最初可能是3.1版本,但是6个月后,他们可以获得3.4 - 没有锁定文件,没有办法跟踪具体的构建。这就是为什么它应该永远在你的代码库。在上面的情况下,我的lockfile看起来像这样:

PODS:

    - AFNetworking/Serialization (3.1.0)

DEPENDENCIES:

    - AFNetworking/Serialization (~> 3.0)

SPEC CHECKSUMS:

AFNetworking: 5e0e199f73d8626b11e79750991f5d173d1f8b67

PODFILE CHECKSUM: 876ceaa409f4ade2b3d58d310dbe026393824bcc

COCOAPODS: 1.0.0.beta.8

Spec CHECKSUMS能做什么?

通过CocoaPods Master Specs repo,我们尽最大努力确保为公众提供一个一次性的Podspecs存储库。不过,您无法保证每个人都拥有与团队中其他人一样的Podspec版本。

所以,CocoaPods对您的Podspec的JSON表示进行校验和,并将其保存在锁定文件中。你可以复制这段代码就能很容易的生成CHECKSUMS:

~/D/MyApp ⏛  pod ipc spec ~/.cocoapods/repos/master/Specs/AFNetworking/3.1.0/AFNetworking.podspec.json  | openssl sha1

5e0e199f73d8626b11e79750991f5d173d1f8b67

那为什么我看到流失?

使用git仓库,正常的git开发流程是:

拉取一个分支,更改podfile文件

项目开发

提交到主分支

更新Podspec文件,更新到最新Tag的版本

CocoaPods在后台更新更新仓库做的很十分聪明,但是它并不完美。为了避免重新创建整个Pods文件夹,每次它会检查您的库是否处于预期版本,并跳过重新创建整个过程。

在上面的例子中,我们使用了CocoaPods的Specs repo版本的Podspec。在一个分支中,举例来说:

pod 'AFNetworking/Serialization', :git => "https://github.com/orta/AFNetworking.git", :commit => "6f31b5c7bcbd59d4dac7e92e215d3c2c22f3400e"

Podspec在Pods / Local \ Podspecs / AFNetworking.podspec.json中以JSON格式保存到Pods目录中,这是为了确保在Cocodopods沙盒中始终可以访问Podspecs,并且会适当的加快访问速度。这就是podspec用于生成校验和的原因。

那么这怎么会不同步?

•  在开发周期中,使用库时,您将使用pod update [library]来更新正在使用的库。您可以多次使用。

•  PR你在分支上继续做开发,直到你准备要代码审查。此时,你有一个正在开发的版本,你在本地仓库提交了一个PR版用于代码审查。

•  有一些修改影响到podspec的审查,你并没有使用pod update [library]更新仓库,而是回滚了代码(例如,你更改了一些元数据,这不保证另一个更新通过CI 。)

•  一旦所有的代码都审核完,所有的修改都被merge到master分支上

•  运行 pod install - 继续在Pods目录中使用Podspec的旧版本 ,例如:

Pods/Local\ Podspecs/AFNetworking.podspec.json.

•  现在,您的本地Pods文件夹中有较旧的AFNetworking.podspec.json,当下一个人运行pod install并将更改合并时,他们会获得不同的SHA,因为它们具有元数据更改的版本。 

简单修复

最好的选择是在导致流失的计算机上运行pod update [library],这将告诉CocoaPods专门请求一个新版本的库。如果没有给出与您的团队其余部分相同的校验和,那么有一个很好的老朋友:

rm -rf Pods && pod安装

作者:

Orta Therox

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容