版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、基于Subversion和TortoiseSVN的版本控制系統(tǒng)簡單介紹王科2009-05-20什么是版本控制?版本控制就是對在軟件開發(fā)過程中所創(chuàng)建的配置對象的不同版本進行管理,保證任何時候都能取到正確的版本以及版本的組合。摘自貝爾實驗室配置管理的精髓版本控制(Version Control)是軟件配置管理中的重要一環(huán)主要功能:記錄開發(fā)過程的每一次修改,讓開發(fā)工作可以隨時檢查過往的歷史和獲取正確的版本;是系統(tǒng)的“成長記錄”。為什么要使用版本控制?在協(xié)同開發(fā)過程中,確保能夠:保存所有更改的記錄,防止改動丟失能夠快速回復到特定版本的狀態(tài)能夠獲取其他成員的更改在單獨開發(fā)時,上述的前兩點對于自己的開發(fā)過
2、程管理也有莫大的好處。版本控制的方式兩種典型的方式:Lock-Modify-Unlock方式和Copy-Modify-Merge方式,分別以Visual Source Safe和CVS為代表Lock-Modify-Unlock方式:一個文件同一時刻只能有一個人進行修改,可防止沖突,但不利于合作開發(fā);Copy-Modify-Merge方式:可以多人同時修改一個文件,會有沖突的情況,更強調開發(fā)人員的交流,對于合作開發(fā)比較合適;什么是Subversion?Subversion是一個開源的版本控制系統(tǒng),擁有CVS的大部分特征,并在CVS的基礎上有更強的擴展,用來代替 CVS 系統(tǒng)。Subversion
3、的歷史單詞“Subversion”的意義字面上的意義:Sub + Version,標識Subversion是一個版本控制系統(tǒng)。英語中有Subversion這個單詞,意思是“顛覆” :Subversion要顛覆CVS的地位。CVS和Subversion的比較SubversionCVS版本號管理方式所有文件使用同一版本號每個文件有單獨的版本號運行方式多種運行方式:1.作為操作系統(tǒng)的Demon(如Window Service)獨立運行;2.作為開源Web服務器Apache的Web DAV運行;作為操作系統(tǒng)的Demon(如Window Service)獨立運行傳輸協(xié)議file:/,http:/,htt
4、ps:/,svn:/,svn+ssh:/參見CVSRoot的定義對目錄的版本管理對目錄也同樣進行版本管理無文件改名支持需要刪除原文件,重新添加改名后的文件,改名后原文件的修改歷史丟失。事務性提交是否Subversion與CVS相比改進的地方統(tǒng)一的文件版本目錄控制:在Subversion中目錄的變更也是受控的支持文件復制、重命名事務性的提交高效的分支和標記擴展能力:Subversion提供了一組API,可以供其他語言直接調用。使用上的主要不同Subversion的版本號是所有文件共用一個版本號,每一個個文件的改變都會導致總體版本號發(fā)生改變;Subversion的分支/標簽都以文件夾的方式顯示,而
5、不象CVS只是一個獨立的標簽;當作為Apache的Web DAV使用時,Subversion 使用Http協(xié)議傳輸,可以直接在Web瀏覽器中瀏覽;Windows平臺Subversion服務器端的安裝配置安裝程序從 獲取;在Windows平臺直接執(zhí)行安裝程序進行安裝;兩種安裝方式:方式一:類似CVS,作為獨立服務運行,安裝完成后運行如下命令運行Subversion:svnserve -d -r D:SVNStore;可以使用第三方的工具將Subversion添加為Windows的Service(參見 );方式二:將Subversion添加為Apache的Web DAV運行;這種方式對于Subve
6、rsion的控制和管理比較方便,但是配置相對比較麻煩。建議:個人使用或者對權限控制等要求不高時以獨立服務的方式使用Subversion,當團隊開發(fā)時使用Web DAV的方式使用Subversion。Subversion客戶端TortoiseSVN的安裝和設置獲取安裝文件從 下載;安裝直接安裝,安裝完成后會自動集成在資源管理器的右鍵菜單中;注意事項:安裝時“ASP_HACK”的選擇,如果做 開發(fā),安裝時一定要選擇該項。設置主要設置:語言全局忽略模式差異查看工具和合并工具文件疊加圖標右鍵菜單(外觀樣式)Subversion相關軟件服務器端:支持多種操作系統(tǒng)客戶端:Subversion命令行程序Ra
7、pidSVN:獨立的Windows程序,最新版本0.92,仍處于Beta階段;TortoiseSVN:和資源管理器完美集成,基于TortoiseCVS的代碼開發(fā),使用上和TortoiseCVS極為相似;AnkhSVN:和Visual Studio集成,可以在Visual Studio中使用Subversion,仍處于開發(fā)過程中,最新版本0.60 Beta;功能尚不完善。Web瀏覽器:ViewCVS/ WebSVN等,網絡程序,可在瀏覽器中查看SVN信息;Subversion的基本概念Repository(文件倉庫)Workcopy(工作復本)Checkout(取出)Commit(提交)Upda
8、te(更新)Revision(修訂版本)Tag(標簽)Branch(分支)Conflict(沖突)Subversion的基本操作主要操作:在服務器端創(chuàng)建文件倉庫從SVN文件庫中取出代碼把本地文件添加到文件倉庫中從SVN中刪除文件文件/目錄改名提交修改后的文件更新本地文件比較不同版本的文件創(chuàng)建標簽創(chuàng)建分支查看版本分支圖在服務器端創(chuàng)建文件倉庫(一) 文件倉庫的創(chuàng)建功能:在Subversion服務器上創(chuàng)建文件倉庫。操作步驟(在SVN服務器端進行):在要創(chuàng)建文件倉庫的位置創(chuàng)建目錄;在目錄中創(chuàng)建文件庫:命令行方式:svnadmin create D:SVNStore使用TortoiseSVN:資源管理器
9、的右鍵菜單TortoiseSVN在此創(chuàng)建文件庫在服務器端創(chuàng)建文件倉庫(二)文件倉庫的結構Subversion的文件倉庫一般包括如下三個目錄:trunk,tags,branchesTrunk:最新的代碼,相當于CVS中的Head版本;Tags:Subversion使用過程中創(chuàng)建的標簽;Branches:保存Subversion的工作分支;Subversion文件倉庫創(chuàng)建后需要先創(chuàng)建這三個目錄,以方便以后的工作。把本地文件添加到文件倉庫中功能:將客戶端的文件添加到文件庫中,使其接受SVN的控制。操作:在資源管理器中打開取出到本地的工作復本,選中要添加的文件,點擊鼠標右鍵,在彈出菜單中選擇“SVN
10、添加”;在彈出窗口中選擇要添加的文件;點擊OK,完成添加操作。從SVN文件庫中取出代碼功能:從SVN服務器中取出已有的代碼,可以取出當前的最新代碼或指定標簽/分支的代碼。操作:在資源管理器中點擊鼠標右鍵,選擇“SVN 取出”;輸入要取出代碼的文件庫的URL地址;默認是取出主版本的代碼,如果需要取出指定標簽的代碼,則在“版本” Group中指定;版本號的意義說明(非強制):主版本為1.x,x表示該文件的第x次修改;分支版本為1.x.y.z,表示該分支是在第1.x個主版本上建立的1.x.y分支,在該分支上進行了z次修改;從SVN中刪除文件功能:將已經被廢棄的文件中從SVN中刪除;操作:在工作復本中
11、選中要刪除的文件/文件夾,在右鍵菜單中選擇“TortoiseSVN”“刪除”;刪除后需要提交才能夠生效;說明:文件被刪除后,該文件的所有修改歷史仍然保存在SVN服務器中,以后仍然可以獲得該文件的修改歷史。對文件/目錄進行改名功能:對文件/目錄進行Subversion控制下的改名操作,用此功能對文件/目錄進行改名后文件仍處于SVN的控制下并保持連續(xù)的變更信息。操作:在資源管理器中選中要改名的文件,右鍵“TortoiseSVN重命名”;輸入新文件名,點擊“確定”;對文件的重命名將在提交后起作用。注意:必須使用Subversion的重命名功能,直接在資源管理器中進行重命名SVN無法監(jiān)控。提交新添加的
12、和修改后的文件功能:將在客戶端的工作復本中對文件進行的修改提交到服務器中,使修改正式生效;提交后其他人即可獲取你所作的修改。操作:選中進行了修改的文件,或選擇某個目錄(此時對該目錄下包括子目錄所有新添加的或進行過修改的文件進行提交操作);在在選中的文件上點擊鼠標右鍵,選擇“SVN提交”執(zhí)行提交操作;在工作復本的文件夾的空白處點擊鼠標右鍵和選中當前目錄執(zhí)行提交的效果一樣。更新本地文件功能:獲取其他用戶對文件進行的修改,與自己對文件進行的修改進行合并,保證本地的文件總是最新的。操作:選中要更新的文件或文件夾,在右鍵菜單中選擇“更新”;在資源管理器的空白處進行上述操作則對當前目錄進行更新。更新時對不
13、同的人所做的修改會自動合并,如果無法自動合并則會發(fā)生沖突,需要手工用文件比較工具進行合并。說明:在團隊開發(fā)時,更新是一件很重要的工作,可以保持團隊成員之間的工作內容一致,因此要注意經常更新自己的工作復本,以保證自己能夠獲得最新的修改內容。比較不同版本的文件功能:對文件的不同版本進行比較,以確定不同版本之間所作的修改;或比較當前工作復本和服務器版本之間的修改;操作:比較工作復本和服務器版本的區(qū)別:選中要進行版本比較的文件,選擇右鍵菜單中的“SVN比較差異”;比較不同版本之間的修改:需要在版本分支圖中進行。創(chuàng)建標簽/分支功能:標簽:對SVN中一批文件的某個狀態(tài)創(chuàng)建一個“快照”,用于標識標簽創(chuàng)建時各
14、個文件的狀態(tài),方便以后可以隨時找到正確的版本。分支:以主版本(Head)或現有的分支為基礎創(chuàng)建一個和原版本并行開發(fā),互相不受干擾的版本,用于解決已發(fā)布版本的Bug或進行試驗性的開發(fā);操作:選中要創(chuàng)建標簽的文件/文件夾,在右鍵菜單中選擇“TortoiseSVN”“分支/標簽”;在彈出窗口中輸入要創(chuàng)建的標簽/分支的地址;地址組成規(guī)律如下:標簽:文件庫URL + “/tags/ “ + 標簽名;分支:文件庫URL + “/branches/ “ + 分支名;3.點擊“確定”創(chuàng)建分支/標簽;說明:標簽或分支的名稱一定要有描述性,可以僅憑名稱說明為什么要創(chuàng)建標簽;查看版本分支圖功能:以圖形方式直觀地查看
15、單個文件的版本歷史,對各個版本之間進行比較;操作:選中要查看版本分支圖的文件(注意只能選擇單個文件),在右鍵菜單中選擇“TortoiseSVN”“版本分支圖”;在彈出窗口中對版本分支圖進行操作;SVN Blame功能:顯示當前文件的信息(待確定)操作:在資源選擇文件,右鍵菜單“TortoiseSVNBlame”;在分支上工作分支的意義如何在分支上工作在取出代碼時取出指定分支即可,其他操作和在主版本上工作完全相同;在不同分支和主版本之間合并代碼;其他技巧導出功能:使用此功能獲取一個沒有SVN控制信息的工作復本;清理:當Subversion操作中斷時,會有一些殘留的操作信息保留在工作復本中,這時需
16、要進行清理才能夠重新進行工作;生成補丁文件:可以將自己所作的修改以補丁文件的方式交給他人,對于只有匿名訪問的代碼可以以這種方式提交修改;在資源管理器中顯示文件的SVN信息:通過定制資源管理器的顯示字段控制;在項目開發(fā)過程中的使用(一)管理員安裝、配置SVN服務器,設置用戶信息,創(chuàng)建文件庫、模塊;用戶開始在SVN上工作,并隨時將新的工作結果提交到SVN文件庫上;同時用戶隨時更新自己本地的工作復本,以獲得其他人的修改;當開發(fā)工作進行到一定階段(里程碑)要發(fā)布版本(包括測試版本)時,在SVN中創(chuàng)建標簽,標識當前發(fā)布版本的名稱;如果有每日構建過程,可以按照日期每天創(chuàng)建一個標簽;在項目開發(fā)過程中的使用(
17、二)創(chuàng)建標簽和開發(fā)互不干涉,開發(fā)工作可以繼續(xù)進行;當已發(fā)布的版本發(fā)現Bug時,可以從SVN中獲取各次發(fā)布的版本進行比較,以確定是在什么版本引入的Bug;如果正在開發(fā)新版本時,發(fā)現舊版本存在Bug,可以在舊版本的基礎上創(chuàng)建分支,在分支上修改舊版本的Bug,當舊版本上的Bug修改完成后,可以將該分支上的修改合并到主版本上來;從版本控制的角度來看,系統(tǒng)的開發(fā)過程就是不斷地重復以上的過程;SVN使用中的常見問題提交時提示文件已經被修改,需要更新;原因:多人同時修改同一文件,在提交前其他人已經搶先提交到SVN服務器中,導致該錯誤;解決方法:對工作復本中的文件進行更新即可。更新時提示文件發(fā)生沖突;原因:多
18、人同時修改同一文件的同一部分,SVN無法自動進行合并,導致該錯誤;解決方法:對工作復本中的文件和服務器的文件進行比較,手工合并即可。使用SVN應該經常更新:由于文件可能有多個人修改,應該經常更新你的工作拷貝中的文件,這樣能降低發(fā)生沖突的可能性;提交前先在本地進行測試:不允許將有錯誤的文件提交到服務器上;提交時一定要寫備注:備注有助于其他人(包括三個月后的你自己)理解你對文件所做的修改;提交文件時注意要提交一項改動所對應的所有文件修改:如 開發(fā)中一個改動可能同時涉及.aspx文件、.aspx.cs文件和.resx文件,需要同時提交;對于每一個發(fā)布的版本都要建立標簽:當用戶告訴你發(fā)生某個問題時,你可以迅速地追蹤到問題是在哪個版本引入的,如果有每日構建,甚至可以每天都建立一個標簽;使用有意義的標簽名/分支名;使用SVN不應該不提交自己的工作內容;提交時不寫備注;不使用標簽和分支;使用無意義的標簽/分支名稱;對不需要提交的文件(如臨時文件)也提交到SVN中;SVN的缺點整個文件庫共用一個版本號會造成大多數CVS使用者的困惑;一個問題:SVN的標簽似乎沒有和Branch做區(qū)別,也允許取出、編輯,這樣做的原因不明。問題?相關
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025民間借款合同協(xié)議書模板
- 2025深圳市全日制用工勞動合同范本
- 2025汽車駕駛員雇傭合同
- 2025股份有限公司分立合同
- 二零二五年度辦公室租賃合同(含企業(yè)國際化運營支持)3篇
- 2025年度年度監(jiān)護權爭議解決合同3篇
- 2025住宅小區(qū)物業(yè)管理合同范本
- 二零二五年度人工智能與自動駕駛公司戰(zhàn)略合作協(xié)議書3篇
- 2025年度網絡安全公司銷售人員二零二五年度勞動合同3篇
- 2025年度養(yǎng)殖企業(yè)產業(yè)鏈優(yōu)化合作協(xié)議3篇
- 臺球廳打架應急預案
- 高中學生物理學情分析
- 分層作業(yè)的教學設計
- 蘇教版四年級上冊科學期末試題(含答案)
- 精神科出走防范預案及應急處理流程
- 高中英語外研版新教材unit3說課like-father-like-son
- 印度尼西亞民法
- 金屬釕及其化合物
- 【西平李氏】忠武郡王李晟后裔分布及部分家譜
- 水庫回水計算(實用)
- 伊索寓言-狗和影子課件
評論
0/150
提交評論