版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于Subversion和TortoiseSVN的版本控制系統(tǒng)簡(jiǎn)單介紹王科2009-05-20什么是版本控制?版本控制就是對(duì)在軟件開發(fā)過(guò)程中所創(chuàng)建的配置對(duì)象的不同版本進(jìn)行管理,保證任何時(shí)候都能取到正確的版本以及版本的組合。摘自貝爾實(shí)驗(yàn)室配置管理的精髓版本控制(Version Control)是軟件配置管理中的重要一環(huán)主要功能:記錄開發(fā)過(guò)程的每一次修改,讓開發(fā)工作可以隨時(shí)檢查過(guò)往的歷史和獲取正確的版本;是系統(tǒng)的“成長(zhǎng)記錄”。為什么要使用版本控制?在協(xié)同開發(fā)過(guò)程中,確保能夠:保存所有更改的記錄,防止改動(dòng)丟失能夠快速回復(fù)到特定版本的狀態(tài)能夠獲取其他成員的更改在單獨(dú)開發(fā)時(shí),上述的前兩點(diǎn)對(duì)于自己的開發(fā)過(guò)
2、程管理也有莫大的好處。版本控制的方式兩種典型的方式:Lock-Modify-Unlock方式和Copy-Modify-Merge方式,分別以Visual Source Safe和CVS為代表Lock-Modify-Unlock方式:一個(gè)文件同一時(shí)刻只能有一個(gè)人進(jìn)行修改,可防止沖突,但不利于合作開發(fā);Copy-Modify-Merge方式:可以多人同時(shí)修改一個(gè)文件,會(huì)有沖突的情況,更強(qiáng)調(diào)開發(fā)人員的交流,對(duì)于合作開發(fā)比較合適;什么是Subversion?Subversion是一個(gè)開源的版本控制系統(tǒng),擁有CVS的大部分特征,并在CVS的基礎(chǔ)上有更強(qiáng)的擴(kuò)展,用來(lái)代替 CVS 系統(tǒng)。Subversion
3、的歷史單詞“Subversion”的意義字面上的意義:Sub + Version,標(biāo)識(shí)Subversion是一個(gè)版本控制系統(tǒng)。英語(yǔ)中有Subversion這個(gè)單詞,意思是“顛覆” :Subversion要顛覆CVS的地位。CVS和Subversion的比較SubversionCVS版本號(hào)管理方式所有文件使用同一版本號(hào)每個(gè)文件有單獨(dú)的版本號(hào)運(yùn)行方式多種運(yùn)行方式:1.作為操作系統(tǒng)的Demon(如Window Service)獨(dú)立運(yùn)行;2.作為開源Web服務(wù)器Apache的Web DAV運(yùn)行;作為操作系統(tǒng)的Demon(如Window Service)獨(dú)立運(yùn)行傳輸協(xié)議file:/,http:/,htt
4、ps:/,svn:/,svn+ssh:/參見CVSRoot的定義對(duì)目錄的版本管理對(duì)目錄也同樣進(jìn)行版本管理無(wú)文件改名支持需要?jiǎng)h除原文件,重新添加改名后的文件,改名后原文件的修改歷史丟失。事務(wù)性提交是否Subversion與CVS相比改進(jìn)的地方統(tǒng)一的文件版本目錄控制:在Subversion中目錄的變更也是受控的支持文件復(fù)制、重命名事務(wù)性的提交高效的分支和標(biāo)記擴(kuò)展能力:Subversion提供了一組API,可以供其他語(yǔ)言直接調(diào)用。使用上的主要不同Subversion的版本號(hào)是所有文件共用一個(gè)版本號(hào),每一個(gè)個(gè)文件的改變都會(huì)導(dǎo)致總體版本號(hào)發(fā)生改變;Subversion的分支/標(biāo)簽都以文件夾的方式顯示,而
5、不象CVS只是一個(gè)獨(dú)立的標(biāo)簽;當(dāng)作為Apache的Web DAV使用時(shí),Subversion 使用Http協(xié)議傳輸,可以直接在Web瀏覽器中瀏覽;Windows平臺(tái)Subversion服務(wù)器端的安裝配置安裝程序從 獲取;在Windows平臺(tái)直接執(zhí)行安裝程序進(jìn)行安裝;兩種安裝方式:方式一:類似CVS,作為獨(dú)立服務(wù)運(yùn)行,安裝完成后運(yùn)行如下命令運(yùn)行Subversion:svnserve -d -r D:SVNStore;可以使用第三方的工具將Subversion添加為Windows的Service(參見 );方式二:將Subversion添加為Apache的Web DAV運(yùn)行;這種方式對(duì)于Subve
6、rsion的控制和管理比較方便,但是配置相對(duì)比較麻煩。建議:個(gè)人使用或者對(duì)權(quán)限控制等要求不高時(shí)以獨(dú)立服務(wù)的方式使用Subversion,當(dāng)團(tuán)隊(duì)開發(fā)時(shí)使用Web DAV的方式使用Subversion。Subversion客戶端TortoiseSVN的安裝和設(shè)置獲取安裝文件從 下載;安裝直接安裝,安裝完成后會(huì)自動(dòng)集成在資源管理器的右鍵菜單中;注意事項(xiàng):安裝時(shí)“ASP_HACK”的選擇,如果做 開發(fā),安裝時(shí)一定要選擇該項(xiàng)。設(shè)置主要設(shè)置:語(yǔ)言全局忽略模式差異查看工具和合并工具文件疊加圖標(biāo)右鍵菜單(外觀樣式)Subversion相關(guān)軟件服務(wù)器端:支持多種操作系統(tǒng)客戶端:Subversion命令行程序Ra
7、pidSVN:獨(dú)立的Windows程序,最新版本0.92,仍處于Beta階段;TortoiseSVN:和資源管理器完美集成,基于TortoiseCVS的代碼開發(fā),使用上和TortoiseCVS極為相似;AnkhSVN:和Visual Studio集成,可以在Visual Studio中使用Subversion,仍處于開發(fā)過(guò)程中,最新版本0.60 Beta;功能尚不完善。Web瀏覽器:ViewCVS/ WebSVN等,網(wǎng)絡(luò)程序,可在瀏覽器中查看SVN信息;Subversion的基本概念Repository(文件倉(cāng)庫(kù))Workcopy(工作復(fù)本)Checkout(取出)Commit(提交)Upda
8、te(更新)Revision(修訂版本)Tag(標(biāo)簽)Branch(分支)Conflict(沖突)Subversion的基本操作主要操作:在服務(wù)器端創(chuàng)建文件倉(cāng)庫(kù)從SVN文件庫(kù)中取出代碼把本地文件添加到文件倉(cāng)庫(kù)中從SVN中刪除文件文件/目錄改名提交修改后的文件更新本地文件比較不同版本的文件創(chuàng)建標(biāo)簽創(chuàng)建分支查看版本分支圖在服務(wù)器端創(chuàng)建文件倉(cāng)庫(kù)(一) 文件倉(cāng)庫(kù)的創(chuàng)建功能:在Subversion服務(wù)器上創(chuàng)建文件倉(cāng)庫(kù)。操作步驟(在SVN服務(wù)器端進(jìn)行):在要?jiǎng)?chuàng)建文件倉(cāng)庫(kù)的位置創(chuàng)建目錄;在目錄中創(chuàng)建文件庫(kù):命令行方式:svnadmin create D:SVNStore使用TortoiseSVN:資源管理器
9、的右鍵菜單TortoiseSVN在此創(chuàng)建文件庫(kù)在服務(wù)器端創(chuàng)建文件倉(cāng)庫(kù)(二)文件倉(cāng)庫(kù)的結(jié)構(gòu)Subversion的文件倉(cāng)庫(kù)一般包括如下三個(gè)目錄:trunk,tags,branchesTrunk:最新的代碼,相當(dāng)于CVS中的Head版本;Tags:Subversion使用過(guò)程中創(chuàng)建的標(biāo)簽;Branches:保存Subversion的工作分支;Subversion文件倉(cāng)庫(kù)創(chuàng)建后需要先創(chuàng)建這三個(gè)目錄,以方便以后的工作。把本地文件添加到文件倉(cāng)庫(kù)中功能:將客戶端的文件添加到文件庫(kù)中,使其接受SVN的控制。操作:在資源管理器中打開取出到本地的工作復(fù)本,選中要添加的文件,點(diǎn)擊鼠標(biāo)右鍵,在彈出菜單中選擇“SVN
10、添加”;在彈出窗口中選擇要添加的文件;點(diǎn)擊OK,完成添加操作。從SVN文件庫(kù)中取出代碼功能:從SVN服務(wù)器中取出已有的代碼,可以取出當(dāng)前的最新代碼或指定標(biāo)簽/分支的代碼。操作:在資源管理器中點(diǎn)擊鼠標(biāo)右鍵,選擇“SVN 取出”;輸入要取出代碼的文件庫(kù)的URL地址;默認(rèn)是取出主版本的代碼,如果需要取出指定標(biāo)簽的代碼,則在“版本” Group中指定;版本號(hào)的意義說(shuō)明(非強(qiáng)制):主版本為1.x,x表示該文件的第x次修改;分支版本為1.x.y.z,表示該分支是在第1.x個(gè)主版本上建立的1.x.y分支,在該分支上進(jìn)行了z次修改;從SVN中刪除文件功能:將已經(jīng)被廢棄的文件中從SVN中刪除;操作:在工作復(fù)本中
11、選中要?jiǎng)h除的文件/文件夾,在右鍵菜單中選擇“TortoiseSVN”“刪除”;刪除后需要提交才能夠生效;說(shuō)明:文件被刪除后,該文件的所有修改歷史仍然保存在SVN服務(wù)器中,以后仍然可以獲得該文件的修改歷史。對(duì)文件/目錄進(jìn)行改名功能:對(duì)文件/目錄進(jìn)行Subversion控制下的改名操作,用此功能對(duì)文件/目錄進(jìn)行改名后文件仍處于SVN的控制下并保持連續(xù)的變更信息。操作:在資源管理器中選中要改名的文件,右鍵“TortoiseSVN重命名”;輸入新文件名,點(diǎn)擊“確定”;對(duì)文件的重命名將在提交后起作用。注意:必須使用Subversion的重命名功能,直接在資源管理器中進(jìn)行重命名SVN無(wú)法監(jiān)控。提交新添加的
12、和修改后的文件功能:將在客戶端的工作復(fù)本中對(duì)文件進(jìn)行的修改提交到服務(wù)器中,使修改正式生效;提交后其他人即可獲取你所作的修改。操作:選中進(jìn)行了修改的文件,或選擇某個(gè)目錄(此時(shí)對(duì)該目錄下包括子目錄所有新添加的或進(jìn)行過(guò)修改的文件進(jìn)行提交操作);在在選中的文件上點(diǎn)擊鼠標(biāo)右鍵,選擇“SVN提交”執(zhí)行提交操作;在工作復(fù)本的文件夾的空白處點(diǎn)擊鼠標(biāo)右鍵和選中當(dāng)前目錄執(zhí)行提交的效果一樣。更新本地文件功能:獲取其他用戶對(duì)文件進(jìn)行的修改,與自己對(duì)文件進(jìn)行的修改進(jìn)行合并,保證本地的文件總是最新的。操作:選中要更新的文件或文件夾,在右鍵菜單中選擇“更新”;在資源管理器的空白處進(jìn)行上述操作則對(duì)當(dāng)前目錄進(jìn)行更新。更新時(shí)對(duì)不
13、同的人所做的修改會(huì)自動(dòng)合并,如果無(wú)法自動(dòng)合并則會(huì)發(fā)生沖突,需要手工用文件比較工具進(jìn)行合并。說(shuō)明:在團(tuán)隊(duì)開發(fā)時(shí),更新是一件很重要的工作,可以保持團(tuán)隊(duì)成員之間的工作內(nèi)容一致,因此要注意經(jīng)常更新自己的工作復(fù)本,以保證自己能夠獲得最新的修改內(nèi)容。比較不同版本的文件功能:對(duì)文件的不同版本進(jìn)行比較,以確定不同版本之間所作的修改;或比較當(dāng)前工作復(fù)本和服務(wù)器版本之間的修改;操作:比較工作復(fù)本和服務(wù)器版本的區(qū)別:選中要進(jìn)行版本比較的文件,選擇右鍵菜單中的“SVN比較差異”;比較不同版本之間的修改:需要在版本分支圖中進(jìn)行。創(chuàng)建標(biāo)簽/分支功能:標(biāo)簽:對(duì)SVN中一批文件的某個(gè)狀態(tài)創(chuàng)建一個(gè)“快照”,用于標(biāo)識(shí)標(biāo)簽創(chuàng)建時(shí)各
14、個(gè)文件的狀態(tài),方便以后可以隨時(shí)找到正確的版本。分支:以主版本(Head)或現(xiàn)有的分支為基礎(chǔ)創(chuàng)建一個(gè)和原版本并行開發(fā),互相不受干擾的版本,用于解決已發(fā)布版本的Bug或進(jìn)行試驗(yàn)性的開發(fā);操作:選中要?jiǎng)?chuàng)建標(biāo)簽的文件/文件夾,在右鍵菜單中選擇“TortoiseSVN”“分支/標(biāo)簽”;在彈出窗口中輸入要?jiǎng)?chuàng)建的標(biāo)簽/分支的地址;地址組成規(guī)律如下:標(biāo)簽:文件庫(kù)URL + “/tags/ “ + 標(biāo)簽名;分支:文件庫(kù)URL + “/branches/ “ + 分支名;3.點(diǎn)擊“確定”創(chuàng)建分支/標(biāo)簽;說(shuō)明:標(biāo)簽或分支的名稱一定要有描述性,可以僅憑名稱說(shuō)明為什么要?jiǎng)?chuàng)建標(biāo)簽;查看版本分支圖功能:以圖形方式直觀地查看
15、單個(gè)文件的版本歷史,對(duì)各個(gè)版本之間進(jìn)行比較;操作:選中要查看版本分支圖的文件(注意只能選擇單個(gè)文件),在右鍵菜單中選擇“TortoiseSVN”“版本分支圖”;在彈出窗口中對(duì)版本分支圖進(jìn)行操作;SVN Blame功能:顯示當(dāng)前文件的信息(待確定)操作:在資源選擇文件,右鍵菜單“TortoiseSVNBlame”;在分支上工作分支的意義如何在分支上工作在取出代碼時(shí)取出指定分支即可,其他操作和在主版本上工作完全相同;在不同分支和主版本之間合并代碼;其他技巧導(dǎo)出功能:使用此功能獲取一個(gè)沒有SVN控制信息的工作復(fù)本;清理:當(dāng)Subversion操作中斷時(shí),會(huì)有一些殘留的操作信息保留在工作復(fù)本中,這時(shí)需
16、要進(jìn)行清理才能夠重新進(jìn)行工作;生成補(bǔ)丁文件:可以將自己所作的修改以補(bǔ)丁文件的方式交給他人,對(duì)于只有匿名訪問(wèn)的代碼可以以這種方式提交修改;在資源管理器中顯示文件的SVN信息:通過(guò)定制資源管理器的顯示字段控制;在項(xiàng)目開發(fā)過(guò)程中的使用(一)管理員安裝、配置SVN服務(wù)器,設(shè)置用戶信息,創(chuàng)建文件庫(kù)、模塊;用戶開始在SVN上工作,并隨時(shí)將新的工作結(jié)果提交到SVN文件庫(kù)上;同時(shí)用戶隨時(shí)更新自己本地的工作復(fù)本,以獲得其他人的修改;當(dāng)開發(fā)工作進(jìn)行到一定階段(里程碑)要發(fā)布版本(包括測(cè)試版本)時(shí),在SVN中創(chuàng)建標(biāo)簽,標(biāo)識(shí)當(dāng)前發(fā)布版本的名稱;如果有每日構(gòu)建過(guò)程,可以按照日期每天創(chuàng)建一個(gè)標(biāo)簽;在項(xiàng)目開發(fā)過(guò)程中的使用(
17、二)創(chuàng)建標(biāo)簽和開發(fā)互不干涉,開發(fā)工作可以繼續(xù)進(jìn)行;當(dāng)已發(fā)布的版本發(fā)現(xiàn)Bug時(shí),可以從SVN中獲取各次發(fā)布的版本進(jìn)行比較,以確定是在什么版本引入的Bug;如果正在開發(fā)新版本時(shí),發(fā)現(xiàn)舊版本存在Bug,可以在舊版本的基礎(chǔ)上創(chuàng)建分支,在分支上修改舊版本的Bug,當(dāng)舊版本上的Bug修改完成后,可以將該分支上的修改合并到主版本上來(lái);從版本控制的角度來(lái)看,系統(tǒng)的開發(fā)過(guò)程就是不斷地重復(fù)以上的過(guò)程;SVN使用中的常見問(wèn)題提交時(shí)提示文件已經(jīng)被修改,需要更新;原因:多人同時(shí)修改同一文件,在提交前其他人已經(jīng)搶先提交到SVN服務(wù)器中,導(dǎo)致該錯(cuò)誤;解決方法:對(duì)工作復(fù)本中的文件進(jìn)行更新即可。更新時(shí)提示文件發(fā)生沖突;原因:多
18、人同時(shí)修改同一文件的同一部分,SVN無(wú)法自動(dòng)進(jìn)行合并,導(dǎo)致該錯(cuò)誤;解決方法:對(duì)工作復(fù)本中的文件和服務(wù)器的文件進(jìn)行比較,手工合并即可。使用SVN應(yīng)該經(jīng)常更新:由于文件可能有多個(gè)人修改,應(yīng)該經(jīng)常更新你的工作拷貝中的文件,這樣能降低發(fā)生沖突的可能性;提交前先在本地進(jìn)行測(cè)試:不允許將有錯(cuò)誤的文件提交到服務(wù)器上;提交時(shí)一定要寫備注:備注有助于其他人(包括三個(gè)月后的你自己)理解你對(duì)文件所做的修改;提交文件時(shí)注意要提交一項(xiàng)改動(dòng)所對(duì)應(yīng)的所有文件修改:如 開發(fā)中一個(gè)改動(dòng)可能同時(shí)涉及.aspx文件、.aspx.cs文件和.resx文件,需要同時(shí)提交;對(duì)于每一個(gè)發(fā)布的版本都要建立標(biāo)簽:當(dāng)用戶告訴你發(fā)生某個(gè)問(wèn)題時(shí),你可以迅速地追蹤到問(wèn)題是在哪個(gè)版本引入的,如果有每日構(gòu)建,甚至可以每天都建立一個(gè)標(biāo)簽;使用有意義的標(biāo)簽名/分支名;使用SVN不應(yīng)該不提交自己的工作內(nèi)容;提交時(shí)不寫備注;不使用標(biāo)簽和分支;使用無(wú)意義的標(biāo)簽/分支名稱;對(duì)不需要提交的文件(如臨時(shí)文件)也提交到SVN中;SVN的缺點(diǎn)整個(gè)文件庫(kù)共用一個(gè)版本號(hào)會(huì)造成大多數(shù)CVS使用者的困惑;一個(gè)問(wèn)題:SVN的標(biāo)簽似乎沒有和Branch做區(qū)別,也允許取出、編輯,這樣做的原因不明。問(wèn)題?相關(guān)
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電池市場(chǎng)動(dòng)態(tài)分析考核試卷
- 洗滌機(jī)械企業(yè)財(cái)務(wù)管理考核試卷
- 玉米加工工藝的優(yōu)化與生產(chǎn)效率提升考核試卷
- 嶺回歸課程設(shè)計(jì)
- 文具批發(fā)商的市場(chǎng)營(yíng)銷手段創(chuàng)新考核試卷
- 環(huán)保法規(guī)對(duì)企業(yè)經(jīng)營(yíng)的影響考核試卷
- 海洋油氣開采工程技術(shù)研究方向考核試卷
- 大閘蟹課程設(shè)計(jì)案例
- 2024年度幼兒教育機(jī)構(gòu)跨區(qū)域股份合作經(jīng)營(yíng)合同書3篇
- 沉井基礎(chǔ)課程設(shè)計(jì)計(jì)算
- 2025年高考數(shù)學(xué)復(fù)習(xí)大題題型歸納:專題07 數(shù)列中的構(gòu)造問(wèn)題(解析)
- 22G101三維彩色立體圖集
- 從創(chuàng)意到創(chuàng)業(yè)智慧樹知到期末考試答案章節(jié)答案2024年湖南師范大學(xué)
- 人教版七年級(jí)上冊(cè)《生物》期末試卷(完整)
- 建筑施工安全生產(chǎn)治本攻堅(jiān)三年行動(dòng)方案(2024-2026年)
- 瀝青路面養(yǎng)護(hù)銑刨施工技術(shù)規(guī)范.文檔
- 萬(wàn)科物業(yè)服務(wù)工作手冊(cè)
- 等保2完整版本.0介紹及建設(shè)流程
- 蘇教版科學(xué)六年級(jí)上冊(cè)期末測(cè)試卷含完整答案(各地真題)
- 市場(chǎng)法評(píng)估企業(yè)價(jià)值
- 大學(xué)生助農(nóng)直播創(chuàng)業(yè)計(jì)劃書
評(píng)論
0/150
提交評(píng)論