0612就業(yè)等多個文件08知識補充_第1頁
0612就業(yè)等多個文件08知識補充_第2頁
0612就業(yè)等多個文件08知識補充_第3頁
0612就業(yè)等多個文件08知識補充_第4頁
0612就業(yè)等多個文件08知識補充_第5頁
已閱讀5頁,還剩77頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

知識補充

版本控制——

SVN

&

GIT iOS學(xué)院/up520it

李南江版本控制的起源現(xiàn)在的軟件項目通常是由一個研發(fā)小組共同分析、設(shè)計、編碼、維護以及測試的針對團隊開發(fā)需要解決以下問題:備份多個版本,費空間,費時間難于恢復(fù)至以前正確版本容易引發(fā)BUG解決代碼沖突困難代碼管理混亂難于追溯問題代碼的修改人和修改時間無法進行權(quán)限控制項目版本發(fā)布困難源代碼管理工具就是為了解決上述問題應(yīng)運而生的版本控制(RevisionControl)是維護工程藍圖的標準做法,能追蹤工程藍圖從誕生一直到定案的過程。是一種記錄若干文件內(nèi)容變化,以便將來查閱特定版本修訂情況的系統(tǒng)現(xiàn)在就開始使用版本控制如果是開發(fā)團隊中的一員,使用版本控制是強制性的!如果是單人開發(fā),也強烈建議現(xiàn)在就開始使用版本控制使用版本控制可以:不會對現(xiàn)有工作造成任何損害不會增加工作量添加新的功能拓展時,會變得更加容易常見版本控制工具CVS

開啟版本控制之門 CVS

1990年誕生,遠古時代的主流源代碼管理工具SVN

集中式版本控制之王者 SVN:又稱subversion,是CVS的接班人,是一款集中式源代碼管理工具。曾經(jīng)是絕大多數(shù)開源軟件的代碼管理工具(google

code),在國內(nèi)軟件企業(yè)使用最為普遍(70%~90%)GIT

分布式版本控制之偉大作品 GIT:一款分布式源代碼管理工具,目前越來越多的開源軟件使用,不過在國內(nèi)企業(yè)尚未普及SVN主要內(nèi)容SVN簡介SVN服務(wù)器端安裝SVN客戶端軟件SVN與Xcode的集成SVN簡介Svn(Subversion)是近年來崛起的版本管理工具,是在國內(nèi)軟件企業(yè)使用最為普遍的集中式源代碼管理工具。Subversion項目的初衷是為了替換當年開源社區(qū)最為流行的版本控制軟件CVS,在CVS的功能的基礎(chǔ)上有很多的提升同時也能較好的解決CVS

系統(tǒng)的一些不足。SVN基本交互流程圖Checkout只需要做一次!每天下班前commit“可編譯版本”每天上班先update前一天所有代碼SVN服務(wù)器運行方式獨立服務(wù)器方式 svnserve借助Apache方式 mod_dav_svnSVN數(shù)據(jù)存儲方式BDB(BerkeleyDB)數(shù)據(jù)庫方式FSFS文件方式(推薦)Subversion組件服務(wù)器組件(管理員使用)svnadmin:用來調(diào)整和修正svn檔案庫的工具mod_dav_svn:給Apache-2.X網(wǎng)頁服務(wù)器使用的外掛模塊;可以用來將你的檔案庫透過網(wǎng)絡(luò)對外開放,以供他人進行存取。svnserve:一個獨立的服務(wù)器程序,可以作為服務(wù)器行程執(zhí)行,或是被SSH啟動;另一個讓你的檔案庫在網(wǎng)絡(luò)上可供其它人存取的方法.客戶端組件(用戶使用)svn:命令行客戶端程序,這是用來管理數(shù)據(jù)的主要工具SVN版本控制策略SVN版本控制策略SVN版本控制策略拷貝-修改-合并方案(svn,cvs采用)其他版本控制策略其他版本控制策略

鎖定-修改-解鎖方案(vss)Subversion安裝subversion軟件下載安裝/server/download/VisualSVN安裝VisualSVN安裝VisualSVN安裝VisualSVN安裝VisualSVN安裝VisualSVN安裝VisualSVN安裝VisualSVN安裝(SVNServerManager)VisualSVN安裝(添加代碼庫)VisualSVN安裝(添加代碼庫)VisualSVN安裝(添加代碼庫)VisualSVN安裝(添加代碼庫)VisualSVN安裝(添加用戶)訪問SVN服務(wù)器訪問SVN服務(wù)器Svn客戶端命令svn常用命令svncheckout-從版本庫取出一個工作拷貝svncommit-將改動的文件提交到版本庫svnupdate-更新你的工作拷貝svnadd-向版本庫中添加新文件svndelete-從版本庫中刪除文件svnrevert-取消所有的本地編輯svninfo-顯示本地或遠程條目的信息svnlist-列出版本庫目錄的條目svnstatus-查看當前工作區(qū)狀態(tài)svnhelp-獲取幫助信息Svn客戶端命令-檢出將項目檢出至user目錄下:svncheckoutURL

[PATH]svncheckout14/Jonathan/Users/Jonathan_Lee/Desktop/workroom/usersvncheckoutsvn://14//Users/Jonathan_Lee/Desktop/workroom/user2Svn客戶端命令–提交代碼到服務(wù)器將改動的文件提交至版本庫:svncommitPATH我們修改user文檔中的LNJTheWrold.c文件,修改一些內(nèi)容,然后提交至版本庫:svncommit/Users/Jonathan_Lee/Desktop/workroom/user/LNJTheWrold.c將改動的文件提交至版本庫:svncommit-m"logdes"PATHsvncommit-m"thisisthefirstcommit"/Users/Jonathan_Lee/Desktop/workroom/user/LNJTheWrold.cSvn客戶端命令-添加到版本控制向版本庫中添加一個新文件:svnaddPAT我們在user中建立一個新文件LNJ.m,然后添加到版本庫中:svnadd/Users/Jonathan_Lee/Desktop/workroom/user/LNJ.m添加到版本庫,文件并沒有提交,因此我們需要提交:svncommit-m"thisistheLNJclass"/Users/Jonathan_Lee/Desktop/workroom/user/LNJ.mSvn客戶端命令–更新更新你的工作拷貝:svnupdateSvn客戶端命令–刪除從版本庫中刪除一個文件:svndeletePATH注意的是svndelete不會立即從版本庫刪除,而是會在下次提交刪除。從版本庫中刪除一個文件,再取消刪除操作:svnrevertPATH假如我們要刪除LNJTheWorld.c svndeleteLNJTheWorld.c但這個時候我們又不想刪除了,我們可以: svnrevertLNJTheWorld.c注意!??!.svn這個隱藏目錄記錄著兩項關(guān)鍵的信息工作文件的基準版本一個本地副本最后更新的時間戳注意:千萬不要手工修改或刪除這個.svn隱藏目錄和里面的文件!否則將會導(dǎo)致本地的工作副本被破壞,無法再進行操作訪問SVN服務(wù)器-GUI客戶端軟件:Cornerstone

/

Versions/Xcode大部分工作在Xcode中都可以完成Xcode對SVN的支持并不是非常友好,尤其新建文件夾時,在Xcode中非常容易出問題Xcode工作:先更新,再提交!Xcode中,最好不要多人同時修改一個Storyboard!Cornerstone添加管理倉庫Xcode5-SVN配置添加SVN地址Xcode5isinXcode>Preferences>Accounts>Repositories(menuontheleft)>(+)AddRepositoryXcode5-SVN配置-添加SVN地址Xcode5-SVN配置-添加SVN地址Xcode5-SVN配置-設(shè)置SVN賬號Xcode5-下載服務(wù)器代碼Xcode5-下載服務(wù)器代碼Xcode5-下載服務(wù)器代碼SVN目錄規(guī)范trunk:主干,當前開發(fā)項目的主目錄branches:分支目錄,添加非主線功能時使用,開發(fā)測試之后,可以合并到主干項目中tags:標記目錄,通常作為重大版本的備份SVN目錄使用-案例某團隊計劃開發(fā)了一款名為MoMo的微博系統(tǒng)此項目初期已經(jīng)有部分基礎(chǔ)代碼研發(fā)團隊在此基礎(chǔ)代碼上經(jīng)過3個月的努力,開發(fā)了一個功能相對完備的V1.0版本上線推廣,并取得了良好的效果由于市場反饋良好,團隊開始著手V2.0版本的開發(fā)工作就在V2.0版本開發(fā)進行中,發(fā)現(xiàn)V1.0版本中有一個嚴重的BUG,如果不及時修改,將造成嚴重的后果研發(fā)團隊收到BUG報告后,立刻安排人員對V1.0版本進行修復(fù),但其他研發(fā)人員則繼續(xù)開發(fā)V2.0版本的新功能修復(fù)BUG的人員很快就找到問題原因并對問題進行了修復(fù),并且發(fā)布了V1.1版本供用戶升級,因此沒有造成重大損失BUG修復(fù)后,研發(fā)人員將修復(fù)后的代碼整合到研發(fā)主線中來,這樣就可以保證今后發(fā)布的后續(xù)版本中不會再出現(xiàn)此問題就這樣,整個團隊在大家的共同努力下,有條不紊地進行著……演練步驟……項目經(jīng)理準備初期代碼LNJ和Jonathan合力完成V1.0的開發(fā)工作為完成后的V1.0建立Tags標簽,注意文件夾的層次接收到Bug報告,LNJ停止手頭工作并備份經(jīng)理負責建立修訂分支,并通知LNJ去解決LNJ從修訂分支CheckoutV1.0的版本,并開始修訂錯誤LNJ修訂完成后通知經(jīng)理經(jīng)理確認之后,將修訂內(nèi)容整合到2.0開發(fā)主線經(jīng)理建立V1.1標簽LNJ繼續(xù)開發(fā)工作...創(chuàng)建MoMo代碼倉庫創(chuàng)建MoMo代碼倉庫角色預(yù)設(shè)manager 項目經(jīng)理lnj 開發(fā)人員1Jonathan 開發(fā)人員2設(shè)定Tags標簽的訪問權(quán)限用鼠標在tags上點擊右鍵選擇“Properties”提示:在任何一家公司Tags標簽中的內(nèi)容絕大多數(shù)人是沒有權(quán)限修改的!設(shè)定Tags標簽的訪問權(quán)限SVN目錄使用-案例trunkV1.0Branches建立分支,修復(fù)BugV1.1將分支整合到主線新特性擴展在V2.0開發(fā)過程中,發(fā)現(xiàn)有一個新特性如果增加會讓系統(tǒng)增色不少,但是如果沒有該功能,系統(tǒng)仍然可以正常使用經(jīng)理決定安排User01來負責攻關(guān)經(jīng)理創(chuàng)建新特性分支,注意文件夾的層次User01

Checkout新特性分支并增加新功能新功能完成之后通知經(jīng)理經(jīng)理負責合并分支使用SVN我們應(yīng)該經(jīng)常更新:降低沖突的可能性提交前需在本機測試通過:降低將問題代碼傳到版本庫提交時一定寫備注:方便其他員工查看和自己以后回顧對于不需要提交的文件不要提交到版本庫提示每次提交之前先更新每天下班前提交當天編譯通過的代碼每天上班第一件事情更新前一天的代碼GIT簡介GIT是一款自由和開源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項目是Linus(李納斯)的第二個偉大作品,2005年由于BitKeeper軟件公司對Linux社區(qū)停止了免費使用權(quán)。Linus迫不得己自己開發(fā)了一個分布式版本控制工具,從而Git誕生了幾乎所有優(yōu)秀的iOS第三方框架都使用GIT目前移動開發(fā)領(lǐng)域,越來越多的公司開始轉(zhuǎn)向GITXcode中已經(jīng)集成了最常用的GIT功能SVNvsGITSVN

集中式效率略差國內(nèi)使用的較為廣泛由較好的圖形化客戶端和服務(wù)器支持,學(xué)習和使用相對簡單項目分支管理簡單GIT分布式效率高國際上已經(jīng)普遍使用,移動互聯(lián)網(wǎng)項目開始越來越多地轉(zhuǎn)向GITXcode集成的功能已經(jīng)能夠滿足大部分日常需求,但還有少量命令需要在終端輸入,學(xué)習曲線相對陡峭項目分支可以無限細分,更適合大型項目的版本規(guī)劃選擇GIT的理由分布式,離線操作每日工作備份異地協(xié)同工作現(xiàn)場版本控制避免引入輔助目錄可以吃后悔藥工作進度隨時保存快GIT工作模型集中式協(xié)同模型社交網(wǎng)絡(luò)式協(xié)同模型集中式協(xié)同模型

共享版本庫開發(fā)人員1開發(fā)人員2開發(fā)人員N社交網(wǎng)絡(luò)式協(xié)同模型共享版本庫開發(fā)人員開發(fā)人員核心開發(fā)人員開發(fā)人員開發(fā)人員GIT基本交互流程圖Clone只需要做一次!每天下班前push可編譯版本每天上班先pull前一天所有代碼GIT倉庫初始化Xcode內(nèi)置的GIT功能,已經(jīng)能夠滿足日常大部分的源代碼管理工作。不過,要真正發(fā)揮GIT的威力,還需要少量的命令行。倉庫初始化gitinit--bareshared.git倉庫文件目錄HEAD:

指向當前分支的一個提交description: 項目的描述信息config: 項目的配置信息info/: 里面有一個exclude文件,指定本項目要忽略的文件objects/: Git對象庫(commit/tree/blob/tag)refs/: 標識每個分支指向哪個提交hooks/: 默認的hook腳本GIT設(shè)置配置信息命令gitconfig

-l

查看配置信息git

config

-e

編輯配置信息默認修改.git/config文件個人信省息初始化(不要隨意修改)gitconfig"user01"gitconfiguser.email

"user01@163.com"提示:如果沒有配置全局信息,每次克隆之后都必須配置用戶名和郵件!使用--global參數(shù)可以配置全局個人信息忽略無需版本控制的文檔echo“*.txt”>.gitignoreGIT基本命令編號命令說明1gitinit

--bareXXX.git創(chuàng)建空的代碼庫(用于共享)2gitinit創(chuàng)建代碼庫3gitclone

倉庫地址從代碼倉庫克隆4gitstatus查看狀態(tài)5gitadd

.將修改后的文件添加到暫存區(qū)6git

commit

-m

"修訂信息"將暫存區(qū)中的內(nèi)容提交到本地代碼庫7git

push

origin

master將本地修改推送到遠程服務(wù)器8git

pull從遠程服務(wù)器更新9gitrm

XXX從代碼庫中刪除文件10git

rm

--cache

XXX從暫存區(qū)中刪除文件提示:git默認推送的分支都是origin

master創(chuàng)建一個用做服務(wù)器的GIT倉庫,存有一堆文件夾gitinit--bareproject.git給程序員使用的,里面的內(nèi)容就是程序的內(nèi)容gitinit工作區(qū)、暫存區(qū)和代碼區(qū)提示:提交之前一定要先使用add將修改/增加的文件添加到暫存區(qū)GIT命令行演練創(chuàng)建代碼倉庫多人協(xié)同工作解決沖突刪除無需版本控制的文檔Xcode演練創(chuàng)建代碼倉庫多人協(xié)同工作解決沖突多人同時修改Storyboard刪除無需版本控制的文檔.gitignore中的內(nèi)容.DS_Store*.xcworkspaceGIT經(jīng)典協(xié)同模型中心倉庫:包含master和develop兩個分支分支分類主要分支:master和develop分支支持性分支:特性分支,發(fā)布分支,熱補丁分支提示:對于商業(yè)級項目,真正開發(fā)過程中都是基于develop分支進行的,develop分支是開發(fā)主線!master分支中,只存放相對穩(wěn)定的分支,例如:0.1版本,0.2版本在實際產(chǎn)品開發(fā)中,需要“規(guī)劃版本”,例如:將100個功能規(guī)劃到5個不同的版本上發(fā)現(xiàn)bug,要基于“上一個最穩(wěn)定的版本”進行修復(fù),這是熱補丁分支存在的意義!理解清楚版本管理分支的特性,是迭代式開發(fā)的重要基礎(chǔ)!給分支打標簽gittag-av1.0-m'Version1.0'打一個1.0的標簽gitpushoriginv1.0將標簽推送到遠程服務(wù)器gittag查看當前標簽gitcheckoutv1.0簽出v1.0標簽gitcheckout-bv1.0hotfix簽出并創(chuàng)建v1.0hotfix分支gitbranch查看當前所在分支安裝GIT服務(wù)器GIT代碼倉庫本質(zhì)上是通過命令行來操作的如果在局域網(wǎng)中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論