SVN學(xué)習(xí)資料.ppt_第1頁
SVN學(xué)習(xí)資料.ppt_第2頁
SVN學(xué)習(xí)資料.ppt_第3頁
SVN學(xué)習(xí)資料.ppt_第4頁
SVN學(xué)習(xí)資料.ppt_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、基于Subversion和TortoiseSVN的版本控制系統(tǒng)簡單介紹,徐衛(wèi) 2007-07-19,什么是版本控制?,版本控制就是對(duì)在軟件開發(fā)過程中所創(chuàng)建的配置對(duì)象的不同版本進(jìn)行管理,保證任何時(shí)候都能取到正確的版本以及版本的組合。摘自貝爾實(shí)驗(yàn)室配置管理的精髓 版本控制(Version Control)是軟件配置管理中的重要一環(huán) 主要功能:記錄開發(fā)過程的每一次修改,讓開發(fā)工作可以隨時(shí)檢查過往的歷史和獲取正確的版本;是系統(tǒng)的“成長記錄”。,為什么要使用版本控制?,在協(xié)同開發(fā)過程中,確保能夠: 保存所有更改的記錄,防止改動(dòng)丟失 能夠快速回復(fù)到特定版本的狀態(tài) 能夠獲取其他成員的更改 在單獨(dú)開發(fā)時(shí),上述

2、的前兩點(diǎn)對(duì)于自己的開發(fā)過程管理也有莫大的好處。,版本控制的方式,兩種典型的方式: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ò)展,用來代替

3、 CVS 系統(tǒng)。 單詞“Subversion”的意義 字面上的意義:Sub + Version,標(biāo)識(shí)Subversion是一個(gè)版本控制系統(tǒng)。 英語中有Subversion這個(gè)單詞,意思是“顛覆” :Subversion要顛覆CVS的地位。 /,CVS和Subversion的比較,Subversion與CVS相比改進(jìn)的地方,統(tǒng)一的文件版本 目錄控制:在Subversion中目錄的變更也是受控的 支持文件復(fù)制、重命名 事務(wù)性的提交 高效的分支和標(biāo)記 擴(kuò)展能力:Subversion提供了一組API,可以供其他語言直接調(diào)用。,使用上的主要不同,Su

4、bversion的版本號(hào)是所有文件共用一個(gè)版本號(hào),每一個(gè)個(gè)文件的改變都會(huì)導(dǎo)致總體版本號(hào)發(fā)生改變; Subversion的分支/標(biāo)簽都以文件夾的方式顯示,而不象CVS只是一個(gè)獨(dú)立的標(biāo)簽; 當(dāng)作為Apache的Web DAV使用時(shí),Subversion 使用Http協(xié)議傳輸,可以直接在Web瀏覽器中瀏覽;,Subversion與VSS+SOS的比較,Windows平臺(tái)Subversion服務(wù)器端的安裝配置,安裝程序從獲?。?在Windows平臺(tái)直接執(zhí)行安裝程序進(jìn)行安裝; 兩種安裝方式: 方式一:類似CVS,作為獨(dú)立服務(wù)運(yùn)行,安裝完成后運(yùn)行如下命

5、令運(yùn)行Subversion: svnserve -d -r D:SVNStore; 可以使用第三方的工具將Subversion添加為Windows的Service(參見/mbn/svnservice/); 方式二:將Subversion添加為Apache的Web DAV運(yùn)行;這種方式對(duì)于Subversion的控制和管理比較方便,但是配置相對(duì)比較麻煩。 建議:個(gè)人使用或者對(duì)權(quán)限控制等要求不高時(shí)以獨(dú)立服務(wù)的方式使用Subversion,當(dāng)團(tuán)隊(duì)開發(fā)時(shí)使用Web DAV的方式使用Subversion。 公司內(nèi)部SVN地址::88,Sub

6、version客戶端TortoiseSVN的安裝和設(shè)置,獲取安裝文件 從下載; 安裝 直接安裝,安裝完成后會(huì)自動(dòng)集成在資源管理器的右鍵菜單中; 設(shè)置 主要設(shè)置: 語言 全局忽略模式 差異查看工具和合并工具 文件疊加圖標(biāo) 右鍵菜單(外觀樣式) 使用VS2003時(shí)必須要使用_SVN代替.SVN,Subversion相關(guān)軟件,服務(wù)器端:支持多種操作系統(tǒng) 客戶端: Subversion命令行程序 RapidSVN:獨(dú)立的Windows程序,最新版本0.92,仍處于Beta階段; TortoiseSVN:和資源管理器完美集成,基于TortoiseCVS的代碼開發(fā),使用上和

7、TortoiseCVS極為相似; AnkhSVN:和Visual Studio集成,可以在Visual Studio中使用Subversion,仍處于開發(fā)過程中,最新版本0.60 Beta;功能尚不完善。 Web瀏覽器:ViewCVS/ WebSVN等,網(wǎng)絡(luò)程序,可在瀏覽器中查看SVN信息;,Subversion的基本概念,Repository(文件倉庫) Workcopy(工作副本) Checkout(取出) Commit(提交) Update(更新) Revision(修訂版本) Tag(標(biāo)簽) Branch(分支) Conflict(沖突),Subversion的基本操作,主要操作: 在

8、服務(wù)器端創(chuàng)建文件倉庫 從SVN文件庫中取出代碼 把本地文件添加到文件倉庫中 從SVN中刪除文件 文件/目錄改名 提交修改后的文件 更新本地文件 比較不同版本的文件 創(chuàng)建標(biāo)簽 創(chuàng)建分支 查看版本分支圖,從SVN文件庫中取出代碼,功能:從SVN服務(wù)器中取出已有的代碼,可以取出當(dāng)前的最新代碼或指定標(biāo)簽/分支的代碼。 操作: 在資源管理器中點(diǎn)擊鼠標(biāo)右鍵,選擇”SVN CHECKOUT” “SVN 取出”; 輸入要取出代碼的文件庫的URL地址; 默認(rèn)是取出主版本的代碼,如果需要取出指定標(biāo)簽的代碼,則在“版本” Group中指定; 版本號(hào)的意義說明(非強(qiáng)制):主版本為1.x,x表示該文件的第x次修改;分支

9、版本為1.x.y.z,表示該分支是在第1.x個(gè)主版本上建立的1.x.y分支,在該分支上進(jìn)行了z次修改; 本地目錄最好為空。 DEMO,把本地文件添加到文件倉庫中,功能:將客戶端的文件添加到文件庫中,使其接受SVN的控制。 操作: 在資源管理器中打開取出到本地的工作副本,選中要添加的文件,點(diǎn)擊鼠標(biāo)右鍵,在彈出菜單中選擇“SVN 添加”; 在彈出窗口中選擇要添加的文件; 點(diǎn)擊OK,完成添加操作。 目錄的添加 DEMO,從SVN中刪除文件,功能:將已經(jīng)被廢棄的文件中從SVN中刪除; 操作: 在工作復(fù)本中選中要?jiǎng)h除的文件/文件夾,在右鍵菜單中選擇“TortoiseSVN”“刪除”; 刪除后需要提交才能

10、夠生效; 說明: 文件被刪除后,該文件的所有修改歷史仍然保存在SVN服務(wù)器中,以后仍然可以獲得該文件的修改歷史。 DEMO,對(duì)文件/目錄進(jìn)行改名,功能:對(duì)文件/目錄進(jìn)行Subversion控制下的改名操作,用此功能對(duì)文件/目錄進(jìn)行改名后文件仍處于SVN的控制下并保持連續(xù)的變更信息。 操作: 在資源管理器中選中要改名的文件,右鍵“TortoiseSVN重命名”; 輸入新文件名,點(diǎn)擊“確定”; 對(duì)文件的重命名將在提交后起作用。 注意:必須使用Subversion的重命名功能,直接在資源管理器中進(jìn)行重命名SVN無法監(jiān)控。 DEMO,提交新添加的和修改后的文件,功能:將在客戶端的工作復(fù)本中對(duì)文件進(jìn)行的

11、修改提交到服務(wù)器中,使修改正式生效;提交后其他人即可獲取你所作的修改。 操作: 選中進(jìn)行了修改的文件,或選擇某個(gè)目錄(此時(shí)對(duì)該目錄下包括子目錄所有新添加的或進(jìn)行過修改的文件進(jìn)行提交操作); 在在選中的文件上點(diǎn)擊鼠標(biāo)右鍵,選擇“SVN提交”執(zhí)行提交操作; 在工作復(fù)本的文件夾的空白處點(diǎn)擊鼠標(biāo)右鍵和選中當(dāng)前目錄執(zhí)行提交的效果一樣。 DEMO,更新本地文件,功能:獲取其他用戶對(duì)文件進(jìn)行的修改,與自己對(duì)文件進(jìn)行的修改進(jìn)行合并,保證本地的文件總是最新的。 操作: 選中要更新的文件或文件夾,在右鍵菜單中選擇“更新”; 在資源管理器的空白處進(jìn)行上述操作則對(duì)當(dāng)前目錄進(jìn)行更新。 更新時(shí)對(duì)不同的人所做的修改會(huì)自動(dòng)合

12、并,如果無法自動(dòng)合并則會(huì)發(fā)生沖突,需要手工用文件比較工具進(jìn)行合并。 說明: 在團(tuán)隊(duì)開發(fā)時(shí),更新是一件很重要的工作,可以保持團(tuán)隊(duì)成員之間的工作內(nèi)容一致,因此要注意經(jīng)常更新自己的工作復(fù)本,以保證自己能夠獲得最新的修改內(nèi)容。 DEMO,比較不同版本的文件,功能:對(duì)文件的不同版本進(jìn)行比較,以確定不同版本之間所作的修改;或比較當(dāng)前工作復(fù)本和服務(wù)器版本之間的修改; 操作: 比較工作復(fù)本和服務(wù)器版本的區(qū)別:選中要進(jìn)行版本比較的文件,選擇右鍵菜單中的“SVN比較差異”; 比較不同版本之間的修改:需要在版本分支圖中進(jìn)行。 DEMO,創(chuàng)建標(biāo)簽/分支,功能: 標(biāo)簽:對(duì)SVN中一批文件的某個(gè)狀態(tài)創(chuàng)建一個(gè)“快照”,用于

13、標(biāo)識(shí)標(biāo)簽創(chuàng)建時(shí)各個(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)簽:文件庫URL + “/tags/ “ + 標(biāo)簽名; 分支:文件庫URL + “/branches/ “ + 分支名; 3.點(diǎn)擊“確定”創(chuàng)建分支/標(biāo)簽; 說明: 標(biāo)簽或分支的名稱一定要有描述性,可以僅憑名稱說明為什么要?jiǎng)?chuàng)建標(biāo)簽; DE

14、MO,查看版本分支圖,功能:以圖形方式直觀地查看單個(gè)文件的版本歷史,對(duì)各個(gè)版本之間進(jìn)行比較; 操作: 選中要查看版本分支圖的文件(注意只能選擇單個(gè)文件),在右鍵菜單中選擇“TortoiseSVN”“版本分支圖”; 在彈出窗口中對(duì)版本分支圖進(jìn)行操作; DEMO,在分支上工作,分支的意義 如何在分支上工作 在取出代碼時(shí)取出指定分支即可,其他操作和在主版本上工作完全相同; 在不同分支和主版本之間合并代碼;,其他技巧,導(dǎo)出功能:使用此功能獲取一個(gè)沒有SVN控制信息的工作復(fù)本; 清理:當(dāng)Subversion操作中斷時(shí),會(huì)有一些殘留的操作信息保留在工作復(fù)本中,這時(shí)需要進(jìn)行清理才能夠重新進(jìn)行工作; 生成補(bǔ)丁

15、文件:可以將自己所作的修改以補(bǔ)丁文件的方式交給他人,對(duì)于只有匿名訪問的代碼可以以這種方式提交修改; 在資源管理器中顯示文件的SVN信息:通過定制資源管理器的顯示字段控制;,在項(xiàng)目開發(fā)過程中的使用(一),管理員安裝、配置SVN服務(wù)器,設(shè)置用戶信息,創(chuàng)建文件庫、模塊; 用戶開始在SVN上工作,并隨時(shí)將新的工作結(jié)果提交到SVN文件庫上; 同時(shí)用戶隨時(shí)更新自己本地的工作復(fù)本,以獲得其他人的修改; 當(dāng)開發(fā)工作進(jìn)行到一定階段(里程碑)要發(fā)布版本(包括測(cè)試版本)時(shí),在SVN中創(chuàng)建標(biāo)簽,標(biāo)識(shí)當(dāng)前發(fā)布版本的名稱; 如果有每日構(gòu)建過程,可以按照日期每天創(chuàng)建一個(gè)標(biāo)簽;,在項(xiàng)目開發(fā)過程中的使用(二),創(chuàng)建標(biāo)簽和開發(fā)互

16、不干涉,開發(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修改完成后,可以將該分支上的修改合并到主版本上來; 從版本控制的角度來看,系統(tǒng)的開發(fā)過程就是不斷地重復(fù)以上的過程;,SVN使用中的常見問題,提交時(shí)提示文件已經(jīng)被修改,需要更新; 原因:多人同時(shí)修改同一文件,在提交前其他人已經(jīng)搶先提交到SVN服務(wù)器中,導(dǎo)致該錯(cuò)誤; 解決方法:對(duì)工作復(fù)本中的文件進(jìn)行更新即可。 更新時(shí)提示文件發(fā)生沖突; 原因:多人同

17、時(shí)修改同一文件的同一部分,SVN無法自動(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)的所有文件修改:如ASP.Net開發(fā)中一個(gè)改動(dòng)可能同時(shí)涉及.aspx文件、.aspx.cs文件和.resx文件,需要同時(shí)提交; 對(duì)于每一個(gè)發(fā)布的版本都要建立標(biāo)簽:當(dāng)用戶告

18、訴你發(fā)生某個(gè)問題時(shí),你可以迅速地追蹤到問題是在哪個(gè)版本引入的,如果有每日構(gòu)建,甚至可以每天都建立一個(gè)標(biāo)簽; 使用有意義的標(biāo)簽名/分支名;,使用SVN不應(yīng)該,不提交自己的工作內(nèi)容; 提交時(shí)不寫備注; 不使用標(biāo)簽和分支; 使用無意義的標(biāo)簽/分支名稱; 對(duì)不需要提交的文件(如臨時(shí)文件)也提交到SVN中;,SVN的缺點(diǎn),整個(gè)文件庫共用一個(gè)版本號(hào)會(huì)造成大多數(shù)CVS使用者的困惑; 一個(gè)問題:SVN的標(biāo)簽似乎沒有和Branch做區(qū)別,也允許取出、編輯,這樣做的原因不明。,問題?,相關(guān)網(wǎng)站,Subversion官方站點(diǎn): Subversion中文站點(diǎn) TortoiseSVN: RapidSVN: AnkhSV

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論