GitLab被用于存儲(chǔ)公司的項(xiàng)目审胚,我們可以把公司項(xiàng)目所用到的組件也放到GitLab上,使用Cocoa Pods來(lái)直接快速集成。
但是初學(xué)者首次使用GitLab做這個(gè)集成,頭緒很亂苗胀,會(huì)遇到很多坑襟诸,經(jīng)我摸索,來(lái)了基协,梳理出了流程歌亲,按這個(gè)流程,即可快速學(xué)會(huì)堡掏。
1应结、在GitLab上創(chuàng)建一個(gè)私有庫(kù)
這里建的私有庫(kù)名稱(chēng)是ZFGitLabTest刨疼,Visibility Level默認(rèn)是Private泉唁。
此時(shí)的GitLab上這個(gè)私有庫(kù)是個(gè)空庫(kù),什么都沒(méi)有揩慕。
2亭畜、在本地的項(xiàng)目文件夾中創(chuàng)建本地私有庫(kù)
cd到本地的項(xiàng)目文件夾
輸入 pod lib create ZFGitLabTest 敲回車(chē),直到出現(xiàn)問(wèn)你問(wèn)題迎卤,請(qǐng)根據(jù)需要回答:
What platform do you want to use?? [ iOS / macOS ]
ios
What language do you want to use?? [ Swift / ObjC ]
objc
Would you like to include a demo application with your library? [ Yes / No ]
yes
Which testing frameworks will you use? [ Specta / Kiwi / None ]
none
Would you like to do view based testing? [ Yes / No ]
no
What is your class prefix?
ZF
回答完最后一個(gè)問(wèn)題拴鸵,敲回車(chē),本地項(xiàng)目文件夾中會(huì)出現(xiàn)一個(gè)ZFGitLabTest文件夾蜗搔,而且Xcode會(huì)自動(dòng)打開(kāi)這個(gè)ZFGitLabTest庫(kù)劲藐,關(guān)閉即可。此時(shí)樟凄,說(shuō)明ZFGitLabTest私有庫(kù)已經(jīng)創(chuàng)建完畢聘芜。
3、修改本地私有庫(kù)的podspec文件
使用pod lib create 創(chuàng)建的本地私有庫(kù)默認(rèn)是基于GitHub的缝龄,因此生成的podspec文件中的s.homepage和s.source中的git也都是基于GitHub的汰现,我們需要將這兩個(gè)地方修改成基于GitLab的地址。
s.homepage即是這個(gè)私有庫(kù)在GitLab上的主頁(yè)地址(地址欄中的地址)叔壤;
s.source中的git即是這個(gè)私有庫(kù)在GitLab上的git地址
其他的可以不動(dòng)瞎饲。
4、將本地私有庫(kù)推送到GitLab上的私有庫(kù)
cd到本地的這個(gè)私有庫(kù)炼绘,依次執(zhí)行以下命令:
git init
git remote add origin https://yyyy/xxxx/zzz.git
(說(shuō)明:https://yyyy/xxxx/zzz.git 是 你的這個(gè)私有庫(kù)在GitLab上的git地址)
git add .
git commit -m "your commit message"
git push -u origin master
無(wú)意外的話(huà)嗅战,應(yīng)該就可以把你的本地私有庫(kù)中的文件全部推送到了GitLab上的私有庫(kù)了。
這里之所以是無(wú)意外俺亮,有可能會(huì)遇到推送不上去的問(wèn)題驮捍,出現(xiàn)Updates were rejected because the remote contains work that you do....或者You are not allowed to force push code to a protected branch on this project.....或者其他雜七雜八的問(wèn)題,我百度了很多解決方案铅辞,都不行厌漂。最后這樣解決的:
5、本地項(xiàng)目集成本地私有庫(kù)
由于本地私有庫(kù)還處于開(kāi)發(fā)過(guò)程中斟珊,因此我們以development pods的方式集成到本地項(xiàng)目中苇倡。
在podfile文件中增加:
pod 'ZFGitLabTest', :path => "./ZFGitLabTest/ZFGitLabTest.podspec"
這種方式就是集成本地的ZFGitLabTest這個(gè)庫(kù)富纸。
如果你寫(xiě)成 :
pod 'ZFGitLabTest', :git => "https://xxxx/yyyy/zzz.git"
這種方式就是集成GitLab上的ZFGitLabTest,不過(guò)這種一般是在ZFGitLabTest開(kāi)發(fā)完成后使用旨椒,直接去GitLab集成已經(jīng)開(kāi)發(fā)完畢的ZFGitLabTest晓褪。私有庫(kù)的開(kāi)發(fā)過(guò)程中還是最好使用第一種寫(xiě)法。
cd到本地的項(xiàng)目文件夾综慎,執(zhí)行pod install涣仿,ZFGitLabTest被集成到項(xiàng)目中了
6、測(cè)試
我們?cè)诒镜氐乃接袔?kù)中增加幾個(gè)文件(xxx.h和xxx.m)示惊,同時(shí)刪除那個(gè)默認(rèn)創(chuàng)建出來(lái)的沒(méi)用的ReplaceMe.m文件好港,然后推到GitLab上,看本地私有庫(kù)的改動(dòng)能否關(guān)聯(lián)到GitLab上米罚。
文件操作完畢后钧汹,執(zhí)行pod install,就會(huì)看到新增文件的正確目錄結(jié)構(gòu)了录择,開(kāi)始推送到GitLab上拔莱。
cd到這個(gè)私有庫(kù),執(zhí)行:
git add .
git commit -m "your commit message"
git push
到GitLab看一眼隘竭,這個(gè)私有庫(kù)已經(jīng)更新了:
我們以后就可以本地更新了這個(gè)私有庫(kù)塘秦,推送到了GitLab上了。