本文作者: Leo
本文链接: https://note.leodev.me/2016/04/05/CocoaPods-API-Elaborate-pod-trunk/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!
这里缺少一张报错的图
前几天手贱改了下 GitHub 用户名(LeoiOS -> iTofu),然后发现整个世界都崩溃了。。。
逗比的开始
如个人博客等各处 GitHub 链接慢慢找出来替换(直到现在我都不确定全部替换完了。。。),CocoaPods 上个人库源地址逐个更新。。。(此处略去一千字)
在更新 CocoaPods 库源地址的时候还发现一个悲催的问题,我修改完 GitHub 用户名后再去更新库,不让我更了。。。
[!] You are not allowed to push new versions for this pod.
我勒个去,这。。。这是要挨骂的节奏?亲爱的用户们轻拍。。。第一反应是去啃 CocoaPods 文档,想了想,啃啥文档,直接去提了个 Issue。。。所幸作为开源社区的一份子,CocoaPods 的开发者们尤其友好,主要开发者之一 segiddins 很快也很热心地帮我解决了这个问题。
原来如此
在 segiddins 的解释下弄清楚了,其实这个问题并非因为我更换 GitHub 用户名产生(P关系都木),而是我更换了邮箱地址,导致 CocoaPods 认为我是另一名用户,进而中断了我的更新请求。
我是这样解决的
解决方案也不复杂,流程如下:
- 用原邮箱登录(确认库拥有者身份)
- 添加新邮箱到目标库的拥有者列表
- 用新邮箱登录
- (可选)从目标库的拥有者列表移除老邮箱
命令是这样的:
pod trunk register [OLD EMAIL] [USERNAME]
pod trunk add-owner [POD REP NAME] [NEW EMAIL]
pod trunk register [NEW EMAIL] [USERNAME]
pod trunk remove-owner [POD REP NAME] [OLD EMAIL]
参考:CocoaPods API
哦了,解决了~ 再次向友好的 segiddins 致谢~
加点料,细说 Pod trunk
安利一下可能是你用 CocoaPods 时打交道最多的 pod trunk
,其实呢,这些命令在 CocoaPods API 上都能找得到,只不过老外的思维和我们略有不同,你可能不知道这个命令原来是干这个的罢了。好比上面这个问题,老外提供的这几个步骤(德国人吧这么认真。。。),如果是国人写的话可能直接一个 pod trunk change owner A to B
命令就完了。。。
pod trunk register [EMAIL] [USERNAME]
注册&登录。
在你的 Mac 上只需要运行一次,然后去邮箱中点击确认邮件的链接即可,当然你也可以使用该命令在不同的账号中来回切换。
示例:
pod trunk register [email protected] `Leo`
pod trunk push [PATH]
发布库。
我一般在本地操作,PATH 一般就是 PodRepName.podspec。不过官网文档上说 PATH 缺省是当前目录,所以 cd 到库的本地目录,然后直接 pod trunk push
应该也是可以滴!
示例:
pod trunk push LCActionSheet.podspec
...
Done!
pod trunk me
查看自己的账号信息,以及账号拥有的仓库。
示例:
bogon:hexo Leo$ pod trunk me
- Name: Leo
- Email: [email protected]
- Since: April 1st, 05:09
- Pods:
- LCActionSheet
- LCNewFeature
- LCProgressHUD
- LCDownloadManager
- LCLoadingHUD
- LCCoolHUD
- LCNavigationController
- LCBannerView
- LCTabBarController
- LCTabBarControllerForLM
- Sessions:
- April 1st, 05:09 - August 7th, xx:22. IP: xxx.xxx.xx.xxx
- April 4th, 20:44 - August 10th, xx:58. IP: xxx.xxx.xx.xxx
- April 4th, 21:37 - August 12th, xx:33. IP: xxx.xxx.xx.xxx
pod trunk info [POD REP NAME]
查看某个库的信息,包括拥有者、各版本版本号及发布时间。
示例:
bogon:hexo Leo$ pod trunk info LCActionSheet
LCActionSheet
- Versions:
- 1.0.1 (2015-11-09 05:43:23 UTC)
- 1.0.2 (2015-11-09 06:08:47 UTC)
- 1.0.5 (2015-11-09 08:14:53 UTC)
- 1.0.6 (2015-11-09 08:28:27 UTC)
- 1.1.0 (2015-12-07 04:49:24 UTC)
- 1.1.1 (2015-12-09 11:12:05 UTC)
- 1.1.3 (2015-12-16 10:18:15 UTC)
- 1.1.5 (2016-02-17 10:59:12 UTC)
- 1.2.0 (2016-03-07 02:23:21 UTC)
- 1.2.1 (2016-03-15 11:01:57 UTC)
- 1.2.2 (2016-04-05 03:03:16 UTC)
- 1.2.3 (2016-04-05 04:22:12 UTC)
- Owners:
- Leo
pod trunk add-owner [POD REP NAME] [OWNER-EMAIL]
pod trunk remove-owner [POD REP NAME] [OWNER-EMAIL]
添加/移除某个库的拥有者,上文有提到该命令。
你必须先运行过 pod trunk register
登录过,并且操作的是你账号拥有的库。
pod trunk deprecate [POD REP NAME]
不赞成使用,让某个库过期的意思。
如果导入声明 deprecate 的库,应该会收到警告。
该命令貌似是 CocoaPods V 1.0.0 推出来的,由于目前 V 1.0.0 是 beta 版,我使用的正式版是 V 0.39.0,所以暂时无法演示该命令。
pod trunk delete [POD REP NAME] [VERSION]
删除某个库的某个版本,该行为不可回退。
⚠️ 官方文档也明确表示 不赞成 使用该命令,建议使用 pod trunk deprecate
代替,以防止导入该库的用户项目无法运行,请注意这是一种及其不友好且让人恼火的行为!
该命令暂无示例,原因同上条。
题外话
顺带吐槽下国内社区对 CocoaPods 等开源项目的关注度,比如 CocoaPods,用国内的搜索引擎某度搜到的百分之九十九都是安装教程,更新教程,我靠。。。面包有了我们能不能考虑考虑黄油?
再提下,好像 GitHub Pages 的 帮助页 被墙了?貌似是这几天某站在亚太放了台服务器,然后某墙新增屏蔽时的误操作?各位珍重。。。