一、github上创建开源项目
GitHub是目前使用最广的分布式项目管理软件。下面是如何从零开始,将自己的项目放到GitHub上面,并能够像SVN那般update和commit。
1、到https://github.com上建立自己的账号
2、按照的指引,创建第一个代码仓库
“Repository name”可以理解为项目名称。
※现在的Private权限是收费的,所以只能创建Public权限的仓库。
※Private权限,表示只有指定用户可以查看/下载/commit这些代码;而Public权限,则表示所有人都能够看到这些代码并进行下载,但只有你指定的用户才能够进行commit。
3、安装和配置git
[root@localhost ~]# git --version
git version 2.5.4(Apple Git-61)
接着就要 设置用户名和Email 了,Email最好和注册时候的一样。
$ git config --global user.name "Your Name Here"
# Sets the default name for git to use when you commit
$ git config --global user.email "your_email@example.com"
# Sets the default email for git to use when you commit
上面的内容都写在配置文件 ~/.gitconfig 里了
恭喜,到这里,基本Git和GitHub都配置好了!
mac已经带有git,查看版本
4、版本库初始化
如果是从头创建版本库,可以采用先克隆,建立提交数据,最后再通过推送完成GitHub版本库的初始化。
步骤如下
(1) 克隆版本库:
git clone https://github.com/skylinbaiyi/HelloWorld.git
Cloning into 'HelloWorld'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
Checking connectivity... done.
克隆的方式,本地已经存在一个.git文件夹,就不需要执行 git init 了
(2) 修改文件README.md文件:
创建Repository时,如果选择创建README.md文件的话,github上已经存在该文件,如果没有,则手动创建
$ git add README
# Stages your README file, adding it to the list of files to be committed
(3) 提交
git add .
这个git add确实够蛋疼的,commit的话当然是把本地修改的所有文件提交上去了,还非得一个一个的add,这是反人类啊
#会把当前路径下的所有文件,添加到待上传的文件列表中
$ git commit -m 'first commit'
# Commits your files, adding the message "first commit"
(4) push
这里所有的更改都只是在本地的, Push之后才会提交到GitHub保存:
git remote add origin https://github.com/skylinbaiyi/HelloWorld.git
git push origin master
(5)给项目加入一个tag。以便pod能自动识别
git tag -a 0.0.1 -m "Tag release 0.0.1”
git push —tags
二、为自己的项目添加cocoaPods支持
1、注册
trunk需要CocoaPods 0.33版本以上,用pod --version
命令查看版本,如果版本低,需要升级:
sudo gen install cocoapods
pod setup
pod setup后必须要注册后才能提交podspec文件,否则会出现下面的错误
更新完成后,下一步是注册trunk
pod trunk register test@163.com 'test' --description=' ' --verbose
有的地方提示,这一步需要自备梯子,否则就会出现注册失败的问题,经我这里测试,公司网络目前不需要翻墙
注册后CocoaPods会给你的邮箱发送验证链接,点击后就注册成功了,可以用pod trunk me
命令查看自己的注册信息:
上面的命令是我注册时使用的,你需要把邮箱和名字以及描述替换成你的,加上--verbose
可以输出详细debug信息,方便出错时查看。
- Name: Yang Xiaoyu
- Email: yulingtianxia@gmail.com
- Since: May 25th, 20:27
- Sessions:
- May 25th, 20:27 - September 30th, 22:41. IP: 23.228.209.171
Description: macbook pro
上面是我的注册信息,CocoaPods不通过密码来验证用户,而是通过一个session token。
2、部署你的Pod
首先你需要建立一个podspec文件,这是我的podspec文件:
Pod::Spec.new do |s|
s.name = "YXYNumberAnimationLabel"
s.version = "1.0.1"
s.summary = "一个可以动起来的数字Label"
s.description = <<-DESC
通过设置数字变化的插值来展现动画效果
DESC
s.homepage = "https://github.com/yulingtianxia/YXYNumberAnimationLabel"
s.license = 'MIT'
s.author = { "YangXiaoyu" => "yulingtianxia@gmail.com" }
s.social_media_url = "http://twitter.com/yulingtianxia"
s.source = { :git => "https://github.com/yulingtianxia/YXYNumberAnimationLabel.git", :tag => s.version.to_s }
s.platform = :ios, '6.0'
s.requires_arc = true
s.source_files = 'YXYNumberAnimationLabel/*'
s.frameworks = 'Foundation', 'UIKit'
#s.private_header_files = 'Classes/ios/private/*.h'
#s.dependency 'FLKAutoLayout', '~> 0.1'
end
在验证和上传你的podspec文件到trunk之前,需要将你的源码push到Github上,tag一个版本号并发布一个release版本,这样podspec文件中的s.source
的值才能是准确的:
git add -A
git commit -m "Release 1.0.1."
git tag '1.0.1'
git push --tags
git push origin master
这两条命令是为pod添加版本号并打上tag:
set the new version to 1.0.1
set the new tag to 1.0.1
pod trunk push命令做了如下三个工作:
在你podspec文件下的路径运行pod trunk push YXYNumberAnimationLabel.podspec
命令,同样需要翻墙梯子自备,别忘了将YXYNumberAnimationLabel.podspec
替换成你的podspec文件名。
- 验证你本地的podspec文件(你也可以用
pod spec lint
命令来验证) - 上传你的podspec文件到trunk
- 将你的podspec文件转化成trunk需要的JSON文件
如果部署成功,CocosPods会在Twitter上@你
就像文章最开始的架构图描述的那样,你在trunk中的操作依然会在CocoaPods/Specs仓库中更新。以后再做更改时只需要更新版本号然后通过trunk来提交,不用向CocoaPods/Specspull request并等待审核和merge了。
运行pod setup
来更新你的Pods依赖库tree后,再使用pod search YXYNumberAnimationLabel
命令来查找刚刚加入的名字叫YXYNumberAnimationLabel
的依赖库:
-> YXYNumberAnimationLabel (1.0.1)
一个可以动起来的数字Label
pod 'YXYNumberAnimationLabel', '~> 1.0.1'
- Homepage: https://github.com/yulingtianxia/YXYNumberAnimationLabel
- Source: https://github.com/yulingtianxia/YXYNumberAnimationLabel.git
- Versions: 1.0.1, 1.0.0 [master repo]
注意事项:
(1)验证spec文件的有效性:
pod spec lint文件名 验证resp上的文件
pod lib lint 文件名 这是只是验证本地文件
(2) 添加 --verbose 可以显示详细信息,便于查看问题
pod trunk push Bugrpt.podspec --verbose
参考地址:
1. podspec文件的格式参考广告文档: https://guides.cocoapods.org/syntax/podspec.html#specification
2. Cocoapods降低版本及卸载:https://www.meetrue.com/archives/133
三、提交 podspec 文件到github的方法对比
提交结果查看地方
https://github.com/CocoaPods/Specs/tree/master/Specs
1、旧方法
CocoaPods详解之----制作篇
http://blog.csdn.net/wzzvictory/article/details/20067595
2、新方法
Publish Your Pods on CocoaPods With Trunk
http://yulingtianxia.com/blog/2014/05/26/publish-your-pods-on-cocoapods-with-trunk/
iOS:手把手教你发布代码到CocoaPods(Trunk方式)
http://www.cnblogs.com/wengzilin/p/4742530.html
其他文章中提到,需要cocoaPods审核几天,才能有效,但我这里使用的实际情况是,只要pod trunk push成功,就马上有效了,在 CocoaPods/Specs中就可以看到了,CocoaPods也可以使用这个库了
里面有个log信息提示有个beta版本可以使用,这个千万不要下载,可能会有很多问题,还是老老实实使用最新的正式版本才靠谱
四、问题总结
1. github的账号密码问题
如果有多个github账号,在进行账号切换提交项目时,会出现没权限的问题
2. 路径不对
Unable to interpret the specified path as a podspec
原因是没有tag标记,代码push完全后,添加一个tag,这个tag需要和podspec文件的version字段对应
3. 找不到branch版本
我们添加tag时,写的是1.0.2,需要加上字母“v”, v1.0.2