




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
知識(shí)補(bǔ)充
版本控制——
SVN
&
GIT iOS學(xué)院/up520it
李南江版本控制的起源現(xiàn)在的軟件項(xiàng)目通常是由一個(gè)研發(fā)小組共同分析、設(shè)計(jì)、編碼、維護(hù)以及測(cè)試的針對(duì)團(tuán)隊(duì)開(kāi)發(fā)需要解決以下問(wèn)題:備份多個(gè)版本,費(fèi)空間,費(fèi)時(shí)間難于恢復(fù)至以前正確版本容易引發(fā)BUG解決代碼沖突困難代碼管理混亂難于追溯問(wèn)題代碼的修改人和修改時(shí)間無(wú)法進(jìn)行權(quán)限控制項(xiàng)目版本發(fā)布困難源代碼管理工具就是為了解決上述問(wèn)題應(yīng)運(yùn)而生的版本控制(RevisionControl)是維護(hù)工程藍(lán)圖的標(biāo)準(zhǔn)做法,能追蹤工程藍(lán)圖從誕生一直到定案的過(guò)程。是一種記錄若干文件內(nèi)容變化,以便將來(lái)查閱特定版本修訂情況的系統(tǒng)現(xiàn)在就開(kāi)始使用版本控制如果是開(kāi)發(fā)團(tuán)隊(duì)中的一員,使用版本控制是強(qiáng)制性的!如果是單人開(kāi)發(fā),也強(qiáng)烈建議現(xiàn)在就開(kāi)始使用版本控制使用版本控制可以:不會(huì)對(duì)現(xiàn)有工作造成任何損害不會(huì)增加工作量添加新的功能拓展時(shí),會(huì)變得更加容易常見(jiàn)版本控制工具CVS
開(kāi)啟版本控制之門(mén) CVS
1990年誕生,遠(yuǎn)古時(shí)代的主流源代碼管理工具SVN
集中式版本控制之王者 SVN:又稱subversion,是CVS的接班人,是一款集中式源代碼管理工具。曾經(jīng)是絕大多數(shù)開(kāi)源軟件的代碼管理工具(google
code),在國(guó)內(nèi)軟件企業(yè)使用最為普遍(70%~90%)GIT
分布式版本控制之偉大作品 GIT:一款分布式源代碼管理工具,目前越來(lái)越多的開(kāi)源軟件使用,不過(guò)在國(guó)內(nèi)企業(yè)尚未普及SVN主要內(nèi)容SVN簡(jiǎn)介SVN服務(wù)器端安裝SVN客戶端軟件SVN與Xcode的集成SVN簡(jiǎn)介Svn(Subversion)是近年來(lái)崛起的版本管理工具,是在國(guó)內(nèi)軟件企業(yè)使用最為普遍的集中式源代碼管理工具。Subversion項(xiàng)目的初衷是為了替換當(dāng)年開(kāi)源社區(qū)最為流行的版本控制軟件CVS,在CVS的功能的基礎(chǔ)上有很多的提升同時(shí)也能較好的解決CVS
系統(tǒng)的一些不足。SVN基本交互流程圖Checkout只需要做一次!每天下班前commit“可編譯版本”每天上班先update前一天所有代碼SVN服務(wù)器運(yùn)行方式獨(dú)立服務(wù)器方式 svnserve借助Apache方式 mod_dav_svnSVN數(shù)據(jù)存儲(chǔ)方式BDB(BerkeleyDB)數(shù)據(jù)庫(kù)方式FSFS文件方式(推薦)Subversion組件服務(wù)器組件(管理員使用)svnadmin:用來(lái)調(diào)整和修正svn檔案庫(kù)的工具mod_dav_svn:給Apache-2.X網(wǎng)頁(yè)服務(wù)器使用的外掛模塊;可以用來(lái)將你的檔案庫(kù)透過(guò)網(wǎng)絡(luò)對(duì)外開(kāi)放,以供他人進(jìn)行存取。svnserve:一個(gè)獨(dú)立的服務(wù)器程序,可以作為服務(wù)器行程執(zhí)行,或是被SSH啟動(dòng);另一個(gè)讓你的檔案庫(kù)在網(wǎng)絡(luò)上可供其它人存取的方法.客戶端組件(用戶使用)svn:命令行客戶端程序,這是用來(lái)管理數(shù)據(jù)的主要工具SVN版本控制策略SVN版本控制策略SVN版本控制策略拷貝-修改-合并方案(svn,cvs采用)其他版本控制策略其他版本控制策略
鎖定-修改-解鎖方案(vss)Subversion安裝subversion軟件下載安裝/server/download/VisualSVN安裝VisualSVN安裝VisualSVN安裝VisualSVN安裝VisualSVN安裝VisualSVN安裝VisualSVN安裝VisualSVN安裝(SVNServerManager)VisualSVN安裝(添加代碼庫(kù))VisualSVN安裝(添加代碼庫(kù))VisualSVN安裝(添加代碼庫(kù))VisualSVN安裝(添加代碼庫(kù))VisualSVN安裝(添加用戶)訪問(wèn)SVN服務(wù)器訪問(wèn)SVN服務(wù)器Svn客戶端命令svn常用命令svncheckout-從版本庫(kù)取出一個(gè)工作拷貝svncommit-將改動(dòng)的文件提交到版本庫(kù)svnupdate-更新你的工作拷貝svnadd-向版本庫(kù)中添加新文件svndelete-從版本庫(kù)中刪除文件svnrevert-取消所有的本地編輯svninfo-顯示本地或遠(yuǎn)程條目的信息svnlist-列出版本庫(kù)目錄的條目svnstatus-查看當(dāng)前工作區(qū)狀態(tài)svnhelp-獲取幫助信息Svn客戶端命令-檢出將項(xiàng)目檢出至user目錄下:svncheckoutURL
[PATH]svncheckout14/Jonathan/Users/Jonathan_Lee/Desktop/workroom/usersvncheckoutsvn://14//Users/Jonathan_Lee/Desktop/workroom/user2Svn客戶端命令–提交代碼到服務(wù)器將改動(dòng)的文件提交至版本庫(kù):svncommitPATH我們修改user文檔中的LNJTheWrold.c文件,修改一些內(nèi)容,然后提交至版本庫(kù):svncommit/Users/Jonathan_Lee/Desktop/workroom/user/LNJTheWrold.c將改動(dòng)的文件提交至版本庫(kù):svncommit-m"logdes"PATHsvncommit-m"thisisthefirstcommit"/Users/Jonathan_Lee/Desktop/workroom/user/LNJTheWrold.cSvn客戶端命令-添加到版本控制向版本庫(kù)中添加一個(gè)新文件:svnaddPAT我們?cè)趗ser中建立一個(gè)新文件LNJ.m,然后添加到版本庫(kù)中:svnadd/Users/Jonathan_Lee/Desktop/workroom/user/LNJ.m添加到版本庫(kù),文件并沒(méi)有提交,因此我們需要提交:svncommit-m"thisistheLNJclass"/Users/Jonathan_Lee/Desktop/workroom/user/LNJ.mSvn客戶端命令–更新更新你的工作拷貝:svnupdateSvn客戶端命令–刪除從版本庫(kù)中刪除一個(gè)文件:svndeletePATH注意的是svndelete不會(huì)立即從版本庫(kù)刪除,而是會(huì)在下次提交刪除。從版本庫(kù)中刪除一個(gè)文件,再取消刪除操作:svnrevertPATH假如我們要?jiǎng)h除LNJTheWorld.c svndeleteLNJTheWorld.c但這個(gè)時(shí)候我們又不想刪除了,我們可以: svnrevertLNJTheWorld.c注意?。?!.svn這個(gè)隱藏目錄記錄著兩項(xiàng)關(guān)鍵的信息工作文件的基準(zhǔn)版本一個(gè)本地副本最后更新的時(shí)間戳注意:千萬(wàn)不要手工修改或刪除這個(gè).svn隱藏目錄和里面的文件!否則將會(huì)導(dǎo)致本地的工作副本被破壞,無(wú)法再進(jìn)行操作訪問(wèn)SVN服務(wù)器-GUI客戶端軟件:Cornerstone
/
Versions/Xcode大部分工作在Xcode中都可以完成Xcode對(duì)SVN的支持并不是非常友好,尤其新建文件夾時(shí),在Xcode中非常容易出問(wèn)題Xcode工作:先更新,再提交!Xcode中,最好不要多人同時(shí)修改一個(gè)Storyboard!Cornerstone添加管理倉(cāng)庫(kù)Xcode5-SVN配置添加SVN地址Xcode5isinXcode>Preferences>Accounts>Repositories(menuontheleft)>(+)AddRepositoryXcode5-SVN配置-添加SVN地址Xcode5-SVN配置-添加SVN地址Xcode5-SVN配置-設(shè)置SVN賬號(hào)Xcode5-下載服務(wù)器代碼Xcode5-下載服務(wù)器代碼Xcode5-下載服務(wù)器代碼SVN目錄規(guī)范trunk:主干,當(dāng)前開(kāi)發(fā)項(xiàng)目的主目錄branches:分支目錄,添加非主線功能時(shí)使用,開(kāi)發(fā)測(cè)試之后,可以合并到主干項(xiàng)目中tags:標(biāo)記目錄,通常作為重大版本的備份SVN目錄使用-案例某團(tuán)隊(duì)計(jì)劃開(kāi)發(fā)了一款名為MoMo的微博系統(tǒng)此項(xiàng)目初期已經(jīng)有部分基礎(chǔ)代碼研發(fā)團(tuán)隊(duì)在此基礎(chǔ)代碼上經(jīng)過(guò)3個(gè)月的努力,開(kāi)發(fā)了一個(gè)功能相對(duì)完備的V1.0版本上線推廣,并取得了良好的效果由于市場(chǎng)反饋良好,團(tuán)隊(duì)開(kāi)始著手V2.0版本的開(kāi)發(fā)工作就在V2.0版本開(kāi)發(fā)進(jìn)行中,發(fā)現(xiàn)V1.0版本中有一個(gè)嚴(yán)重的BUG,如果不及時(shí)修改,將造成嚴(yán)重的后果研發(fā)團(tuán)隊(duì)收到BUG報(bào)告后,立刻安排人員對(duì)V1.0版本進(jìn)行修復(fù),但其他研發(fā)人員則繼續(xù)開(kāi)發(fā)V2.0版本的新功能修復(fù)BUG的人員很快就找到問(wèn)題原因并對(duì)問(wèn)題進(jìn)行了修復(fù),并且發(fā)布了V1.1版本供用戶升級(jí),因此沒(méi)有造成重大損失BUG修復(fù)后,研發(fā)人員將修復(fù)后的代碼整合到研發(fā)主線中來(lái),這樣就可以保證今后發(fā)布的后續(xù)版本中不會(huì)再出現(xiàn)此問(wèn)題就這樣,整個(gè)團(tuán)隊(duì)在大家的共同努力下,有條不紊地進(jìn)行著……演練步驟……項(xiàng)目經(jīng)理準(zhǔn)備初期代碼LNJ和Jonathan合力完成V1.0的開(kāi)發(fā)工作為完成后的V1.0建立Tags標(biāo)簽,注意文件夾的層次接收到Bug報(bào)告,LNJ停止手頭工作并備份經(jīng)理負(fù)責(zé)建立修訂分支,并通知LNJ去解決LNJ從修訂分支CheckoutV1.0的版本,并開(kāi)始修訂錯(cuò)誤LNJ修訂完成后通知經(jīng)理經(jīng)理確認(rèn)之后,將修訂內(nèi)容整合到2.0開(kāi)發(fā)主線經(jīng)理建立V1.1標(biāo)簽LNJ繼續(xù)開(kāi)發(fā)工作...創(chuàng)建MoMo代碼倉(cāng)庫(kù)創(chuàng)建MoMo代碼倉(cāng)庫(kù)角色預(yù)設(shè)manager 項(xiàng)目經(jīng)理lnj 開(kāi)發(fā)人員1Jonathan 開(kāi)發(fā)人員2設(shè)定Tags標(biāo)簽的訪問(wèn)權(quán)限用鼠標(biāo)在tags上點(diǎn)擊右鍵選擇“Properties”提示:在任何一家公司Tags標(biāo)簽中的內(nèi)容絕大多數(shù)人是沒(méi)有權(quán)限修改的!設(shè)定Tags標(biāo)簽的訪問(wèn)權(quán)限SVN目錄使用-案例trunkV1.0Branches建立分支,修復(fù)BugV1.1將分支整合到主線新特性擴(kuò)展在V2.0開(kāi)發(fā)過(guò)程中,發(fā)現(xiàn)有一個(gè)新特性如果增加會(huì)讓系統(tǒng)增色不少,但是如果沒(méi)有該功能,系統(tǒng)仍然可以正常使用經(jīng)理決定安排User01來(lái)負(fù)責(zé)攻關(guān)經(jīng)理創(chuàng)建新特性分支,注意文件夾的層次User01
Checkout新特性分支并增加新功能新功能完成之后通知經(jīng)理經(jīng)理負(fù)責(zé)合并分支使用SVN我們應(yīng)該經(jīng)常更新:降低沖突的可能性提交前需在本機(jī)測(cè)試通過(guò):降低將問(wèn)題代碼傳到版本庫(kù)提交時(shí)一定寫(xiě)備注:方便其他員工查看和自己以后回顧對(duì)于不需要提交的文件不要提交到版本庫(kù)提示每次提交之前先更新每天下班前提交當(dāng)天編譯通過(guò)的代碼每天上班第一件事情更新前一天的代碼GIT簡(jiǎn)介GIT是一款自由和開(kāi)源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項(xiàng)目是Linus(李納斯)的第二個(gè)偉大作品,2005年由于BitKeeper軟件公司對(duì)Linux社區(qū)停止了免費(fèi)使用權(quán)。Linus迫不得己自己開(kāi)發(fā)了一個(gè)分布式版本控制工具,從而Git誕生了幾乎所有優(yōu)秀的iOS第三方框架都使用GIT目前移動(dòng)開(kāi)發(fā)領(lǐng)域,越來(lái)越多的公司開(kāi)始轉(zhuǎn)向GITXcode中已經(jīng)集成了最常用的GIT功能SVNvsGITSVN
集中式效率略差國(guó)內(nèi)使用的較為廣泛由較好的圖形化客戶端和服務(wù)器支持,學(xué)習(xí)和使用相對(duì)簡(jiǎn)單項(xiàng)目分支管理簡(jiǎn)單GIT分布式效率高國(guó)際上已經(jīng)普遍使用,移動(dòng)互聯(lián)網(wǎng)項(xiàng)目開(kāi)始越來(lái)越多地轉(zhuǎn)向GITXcode集成的功能已經(jīng)能夠滿足大部分日常需求,但還有少量命令需要在終端輸入,學(xué)習(xí)曲線相對(duì)陡峭項(xiàng)目分支可以無(wú)限細(xì)分,更適合大型項(xiàng)目的版本規(guī)劃選擇GIT的理由分布式,離線操作每日工作備份異地協(xié)同工作現(xiàn)場(chǎng)版本控制避免引入輔助目錄可以吃后悔藥工作進(jìn)度隨時(shí)保存快GIT工作模型集中式協(xié)同模型社交網(wǎng)絡(luò)式協(xié)同模型集中式協(xié)同模型
共享版本庫(kù)開(kāi)發(fā)人員1開(kāi)發(fā)人員2開(kāi)發(fā)人員N社交網(wǎng)絡(luò)式協(xié)同模型共享版本庫(kù)開(kāi)發(fā)人員開(kāi)發(fā)人員核心開(kāi)發(fā)人員開(kāi)發(fā)人員開(kāi)發(fā)人員GIT基本交互流程圖Clone只需要做一次!每天下班前push可編譯版本每天上班先pull前一天所有代碼GIT倉(cāng)庫(kù)初始化Xcode內(nèi)置的GIT功能,已經(jīng)能夠滿足日常大部分的源代碼管理工作。不過(guò),要真正發(fā)揮GIT的威力,還需要少量的命令行。倉(cāng)庫(kù)初始化gitinit--bareshared.git倉(cāng)庫(kù)文件目錄HEAD:
指向當(dāng)前分支的一個(gè)提交description: 項(xiàng)目的描述信息config: 項(xiàng)目的配置信息info/: 里面有一個(gè)exclude文件,指定本項(xiàng)目要忽略的文件objects/: Git對(duì)象庫(kù)(commit/tree/blob/tag)refs/: 標(biāo)識(shí)每個(gè)分支指向哪個(gè)提交hooks/: 默認(rèn)的hook腳本GIT設(shè)置配置信息命令gitconfig
-l
查看配置信息git
config
-e
編輯配置信息默認(rèn)修改.git/config文件個(gè)人信省息初始化(不要隨意修改)gitconfig"user01"gitconfiguser.email
"user01@163.com"提示:如果沒(méi)有配置全局信息,每次克隆之后都必須配置用戶名和郵件!使用--global參數(shù)可以配置全局個(gè)人信息忽略無(wú)需版本控制的文檔echo“*.txt”>.gitignoreGIT基本命令編號(hào)命令說(shuō)明1gitinit
--bareXXX.git創(chuàng)建空的代碼庫(kù)(用于共享)2gitinit創(chuàng)建代碼庫(kù)3gitclone
倉(cāng)庫(kù)地址從代碼倉(cāng)庫(kù)克隆4gitstatus查看狀態(tài)5gitadd
.將修改后的文件添加到暫存區(qū)6git
commit
-m
"修訂信息"將暫存區(qū)中的內(nèi)容提交到本地代碼庫(kù)7git
push
origin
master將本地修改推送到遠(yuǎn)程服務(wù)器8git
pull從遠(yuǎn)程服務(wù)器更新9gitrm
XXX從代碼庫(kù)中刪除文件10git
rm
--cache
XXX從暫存區(qū)中刪除文件提示:git默認(rèn)推送的分支都是origin
master創(chuàng)建一個(gè)用做服務(wù)器的GIT倉(cāng)庫(kù),存有一堆文件夾gitinit--bareproject.git給程序員使用的,里面的內(nèi)容就是程序的內(nèi)容gitinit工作區(qū)、暫存區(qū)和代碼區(qū)提示:提交之前一定要先使用add將修改/增加的文件添加到暫存區(qū)GIT命令行演練創(chuàng)建代碼倉(cāng)庫(kù)多人協(xié)同工作解決沖突刪除無(wú)需版本控制的文檔Xcode演練創(chuàng)建代碼倉(cāng)庫(kù)多人協(xié)同工作解決沖突多人同時(shí)修改Storyboard刪除無(wú)需版本控制的文檔.gitignore中的內(nèi)容.DS_Store*.xcworkspaceGIT經(jīng)典協(xié)同模型中心倉(cāng)庫(kù):包含master和develop兩個(gè)分支分支分類主要分支:master和develop分支支持性分支:特性分支,發(fā)布分支,熱補(bǔ)丁分支提示:對(duì)于商業(yè)級(jí)項(xiàng)目,真正開(kāi)發(fā)過(guò)程中都是基于develop分支進(jìn)行的,develop分支是開(kāi)發(fā)主線!master分支中,只存放相對(duì)穩(wěn)定的分支,例如:0.1版本,0.2版本在實(shí)際產(chǎn)品開(kāi)發(fā)中,需要“規(guī)劃版本”,例如:將100個(gè)功能規(guī)劃到5個(gè)不同的版本上發(fā)現(xiàn)bug,要基于“上一個(gè)最穩(wěn)定的版本”進(jìn)行修復(fù),這是熱補(bǔ)丁分支存在的意義!理解清楚版本管理分支的特性,是迭代式開(kāi)發(fā)的重要基礎(chǔ)!給分支打標(biāo)簽gittag-av1.0-m'Version1.0'打一個(gè)1.0的標(biāo)簽gitpushoriginv1.0將標(biāo)簽推送到遠(yuǎn)程服務(wù)器gittag查看當(dāng)前標(biāo)簽gitcheckoutv1.0簽出v1.0標(biāo)簽gitcheckout-bv1.0hotfix簽出并創(chuàng)建v1.0hotfix分支gitbranch查看當(dāng)前所在分支安裝GIT服務(wù)器GIT代碼倉(cāng)庫(kù)本質(zhì)上是通過(guò)命令行來(lái)操作的如果在局域網(wǎng)中
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 詩(shī)詞中的意象分析及試題及答案
- 2025-2030年連有余工藝品項(xiàng)目投資價(jià)值分析報(bào)告
- 2025-2030年轉(zhuǎn)接卡項(xiàng)目商業(yè)計(jì)劃書(shū)
- 心理咨詢師考試情緒識(shí)別能力測(cè)評(píng)與試題及答案
- 2025-2030年超高壓型壓力變送器項(xiàng)目商業(yè)計(jì)劃書(shū)
- 2025-2030年蟹簍項(xiàng)目投資價(jià)值分析報(bào)告
- 2025-2030年螟蛾殺星項(xiàng)目商業(yè)計(jì)劃書(shū)
- 2025-2030年落地式紙展示架項(xiàng)目商業(yè)計(jì)劃書(shū)
- 2025-2030年童衫項(xiàng)目投資價(jià)值分析報(bào)告
- 2024心理咨詢師考試新變化
- 2025年鄭州鐵路職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)必考題
- 家具全屋定制的成本核算示例-成本實(shí)操
- 合伙經(jīng)營(yíng)煤炭合同范本
- 2025年安慶醫(yī)藥高等??茖W(xué)校單招職業(yè)適應(yīng)性考試題庫(kù)及答案1套
- “艾梅乙”感染者消除醫(yī)療歧視制度-
- 煤礦單軌吊機(jī)車檢修工技能理論考試題庫(kù)150題(含答案)
- 醫(yī)院院長(zhǎng)聘用合同范本
- 2025年高考物理一輪復(fù)習(xí):熱學(xué)(解析版)
- 2024年洛陽(yáng)市孟津區(qū)引進(jìn)研究生學(xué)歷人才考試真題
- 旋挖機(jī)施工方案
- 養(yǎng)豬場(chǎng)建設(shè)項(xiàng)目可行性研究報(bào)告
評(píng)論
0/150
提交評(píng)論