




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
使用SVN進行版本控制1使用SVN進行版本控制1摘要一、Subversion簡介二、版本控制的基本知識 三、Subversion常用功能四、客戶端工具TortoiseSVN五、SVN使用中常見問題2摘要一、Subversion簡介2精品資料3精品資料3你怎么稱呼老師?如果老師最后沒有總結(jié)一節(jié)課的重點的難點,你是否會認為老師的教學(xué)方法需要改進?你所經(jīng)歷的課堂,是講座式還是討論式?教師的教鞭“不怕太陽曬,也不怕那風(fēng)雨狂,只怕先生罵我笨,沒有學(xué)問無顏見爹娘……”“太陽當(dāng)空照,花兒對我笑,小鳥說早早早……”44使用SVN進行版本控制版本控制是管理信息變更的一門藝術(shù)版本控制工具早已經(jīng)成為許多程序員的主要工具之一
版本控制軟件的用途并不僅限于軟件開發(fā)的領(lǐng)域,只要人們使用計算機來管理經(jīng)常變更的信息,就需要使用版本控制工具
協(xié)同工作,大大提高團隊工作效率及時了解團隊中其他成員的進度資料共享記錄每個文件從誕生到最終完成全過程的每步細節(jié)5使用SVN進行版本控制版本控制是管理信息變更的一門藝術(shù)5使用SVN進行版本控制
Subversion是一個自由的、開放源碼的版本控制系統(tǒng)
它可以管理各個時刻的文件和目錄Subversion將文件存放在repository庫中。這個倉庫非常類似于一個普通的文件服務(wù)器,只是它還可以記錄文件和目錄曾經(jīng)做過的每一次變更Subversion允許你數(shù)據(jù)恢復(fù)到早期版本,或者是檢查數(shù)據(jù)修改的歷史,可把版本控制系統(tǒng)比作一種“時間機器”6使用SVN進行版本控制Subversion是一個自由的、使用SVN進行版本控制
Subversion的倉庫可以通過網(wǎng)絡(luò)來訪問,允許不同的用戶在不同的計算機上使用。不同的使用者可以進行協(xié)同工作。而且所有工作都是有記錄的,如果有錯只要撤銷就可以。Subversion只是版本控制系統(tǒng),不是軟件配置管理系統(tǒng)(SCM)。它是一個通用系統(tǒng),可以管理任何類型的文件集它是一個通道,可以管理任何計算機中的文件系統(tǒng)。7使用SVN進行版本控制Subversion的倉庫可以通過網(wǎng)使用SVN進行版本控制CVS有明顯的局限性和功能上的不足。2000年開始,CollabNet公司就開始著手開發(fā)新的版本控制系統(tǒng)來代替CVS。KarlFogel和JimBlandy是CVS開發(fā)者,加入到開發(fā)subversion當(dāng)中。他們讓Subversion來使用CVS的特性,并且保留相同的開發(fā)模型,但是避開CVS的那些明顯的缺陷。Subversion于2001年8月進入“自測”階段。8使用SVN進行版本控制CVS有明顯的局限性和功能上的不足。8使用SVN進行版本控制目錄控制CVS只能跟蹤單個文件的歷史,而Subversion實現(xiàn)了一個"虛擬"的受控文件系統(tǒng),可以跟蹤整個目錄的變更。真正的版本歷史由于CVS只限于記錄文件的版本信息,像文件復(fù)制、重命名這樣的操作它就不支持,在Subversion中我們可以添加、刪除、復(fù)制和重命名文件和目錄。9使用SVN進行版本控制目錄控制9使用SVN進行版本控制原子化提交一個變更集要么完整地被提交到倉庫中,要么不做任何改變,從而避免發(fā)生不完整地提交變更的情況。受控元數(shù)據(jù)每一個文件和目錄都有一個與其對應(yīng)的屬性集??蛇x的網(wǎng)絡(luò)層
Subversion倉庫的存取是一個抽象概念,有利于其他人實現(xiàn)新的網(wǎng)絡(luò)訪問機制,Subversion可以作為一個外部模塊插入到ApacheHTTP服務(wù)器中。10使用SVN進行版本控制原子化提交10使用SVN進行版本控制一致的數(shù)據(jù)處理
Subversion使用一種二進制的比較算法來表示文件之間的區(qū)別。高效的分支和標(biāo)記分支和標(biāo)記所帶來的開銷與項目的規(guī)模并沒有直接的關(guān)系,Subversion在創(chuàng)建分支和標(biāo)記時使用類似“連接”的方式來復(fù)制項目。擴展能力它是由一組設(shè)計良好的APIs實現(xiàn)的,包含在C的共享庫中,這使得它很容易維護。也很容易被其他應(yīng)用程序或語言使用11使用SVN進行版本控制一致的數(shù)據(jù)處理11使用SVN進行版本控制12使用SVN進行版本控制12使用SVN進行版本控制典型的client/server模式結(jié)構(gòu)在系統(tǒng)的一端是存放著所有受控制數(shù)據(jù)的Subversion倉庫。另一端是Subversion的客戶端程序,管理著受控數(shù)據(jù)的一部分在本地的映射(稱為“工作副本”)。在這兩端之間,是通過各種倉庫存取層(RepositoryAccess,RA)的多條通道。這些通道中,有些要使用計算機網(wǎng)絡(luò),再通過用來訪問Subversion倉庫的服務(wù)器。而有些則完全繞過了網(wǎng)絡(luò),直接對倉庫進行操作。13使用SVN進行版本控制典型的client/server模式結(jié)使用SVN進行版本控制Svn一個命令行的客戶端程序Svnversion報告本地工作副本狀態(tài)(當(dāng)前檔案的修訂版本號表示)的程序Svnadmin
用來創(chuàng)建或者是修復(fù)倉庫的工具svndumpfilter
過濾資源庫程序14使用SVN進行版本控制Svn14使用SVN進行版本控制mod_dav_svnApache服務(wù)器的一個插件模塊,用來使其他人可以通過網(wǎng)絡(luò)訪問這個倉庫svnserve一個定制的、獨立的Subversion服務(wù)程序。可作為一個駐留進程運行或者是由SSH調(diào)用。是使倉庫可以被別人通過網(wǎng)絡(luò)訪問的另一種方法常用的組件是svn和svnadmin,有圖形化客戶端來實現(xiàn)svn和svnadmin功能。15使用SVN進行版本控制mod_dav_svn15使用SVN進行版本控制樣式存取方式
直接從本地磁盤上訪問倉庫http://通過WebDAV協(xié)議訪問Apache服務(wù)器而訪問倉庫https://和http://相同,但使用SSL來作加密svn:// 通過svnserve服務(wù)自定義的協(xié)議svn+ssh://和svn://相同,但通過SSH封裝16使用SVN進行版本控制樣式存取方式使用SVN進行版本控制
所有被Subversion管理的目錄、文件有唯一路徑支持的協(xié)議有http,https,svn,svns,filehttp://88/svn/kexie/proj/account/trunk/protocolhostrepositorydirectory17使用SVN進行版本控制所有被Subversion管理的目錄使用SVN進行版本控制dav目錄:提供給Apache與mod_dav_svn使用的目錄,存儲內(nèi)部數(shù)據(jù)db目錄:所有版本控制的數(shù)據(jù)存放文件hooks目錄:放置hook腳本文件的目錄locks目錄:用來放置Subversion文件庫鎖定數(shù)據(jù)的目錄,用來追蹤存取文件庫的客戶端
format文件:一個文本文件,記錄文件庫配置的版本號
conf目錄:是這個倉庫的配置文件(倉庫的用戶訪問帳號、權(quán)限等)18使用SVN進行版本控制dav目錄:提供給Apache與mod使用SVN進行版本控制倉庫(TheRepository)版本控制模型實際工作中的subversionsubversion/cvs/vss比較19使用SVN進行版本控制倉庫(TheRepository)使用SVN進行版本控制Subversion是一個集中式的系統(tǒng)。它的核心是一個用來存放數(shù)據(jù)的中心倉庫。中心倉庫使用典型的文件和目錄層次結(jié)構(gòu)――樹狀結(jié)構(gòu)來存儲信息。許許多多的客戶端可以連接到中心倉庫,然后讀取或者寫入文件??蛻舳送ㄟ^寫文件來使其他人共享,也可以讀取其它客戶端所寫入的文件。典型的客戶端/服務(wù)器系統(tǒng)模型,如圖所示:20使用SVN進行版本控制Subversion是一個集中式的系使用SVN進行版本控制21使用SVN進行版本控制21使用SVN進行版本控制倉庫就是一種文件服務(wù)器,只是不是通常的那種。Subversion倉庫可以記錄寫入倉庫的每一次更改。這些更改包括對每一個文件的每一次修改,甚至是對目錄本身的修改,例如添加文件、刪除文件和對文件和目錄的重新編排。這些特性使得Subversion倉庫與一般的文件服務(wù)器相比較為特殊??蛻舳送瑯涌梢宰x取文件和目錄以前某個時刻的狀態(tài)。版本控制系統(tǒng)的核心:記錄和跟蹤數(shù)據(jù)的修改歷史22使用SVN進行版本控制倉庫就是一種文件服務(wù)器,只是不是通常的使用SVN進行版本控制
版本控制系統(tǒng)的核心任務(wù)是使得數(shù)據(jù)可以協(xié)作處理和共享。但是不同的系統(tǒng)使用不同的策略來達到這個目標(biāo)。文件共享的問題:怎樣讓系統(tǒng)允許用戶共享信息,而不會讓他們因意外而互相干擾?"鎖定―修改―解鎖"方案
"復(fù)制―修改―合并"方案
23使用SVN進行版本控制版本控制系統(tǒng)的核心任務(wù)是使得數(shù)據(jù)可以使用SVN進行版本控制許多版本控制系統(tǒng)都使用“鎖定―修改―解鎖”模型來解決這個問題,諸如:VSS在這樣一個系統(tǒng)中,倉庫在一個特定的時刻只允許一個人對某個文件進行修改。這種方案的問題是它有一點過于嚴(yán)格了,經(jīng)常會阻塞用戶的使用。鎖定可能會帶來管理問題。鎖定可能導(dǎo)致不必要的串行工作。鎖定可能導(dǎo)致錯誤的安全狀態(tài),文件可能相互依賴24使用SVN進行版本控制許多版本控制系統(tǒng)都使用“鎖定―修改―解使用SVN進行版本控制Subversion、CVS以及其他一些版本控制系統(tǒng)使用“復(fù)制―修改―合并”模型來代替鎖定。每一個用戶的客戶端軟件從中央倉庫創(chuàng)建出一份個人的工作副本――倉庫中文件和目錄的本地映射。用戶就可以并行工作,修改手中的私有副本。這些私有副本合并成為一個全新的版本。版本控制系統(tǒng)常常需要合并,但是最終,操作者本身必須負責(zé)讓合并工作正確進行。25使用SVN進行版本控制Subversion、CVS以及其他使用SVN進行版本控制
"復(fù)制―修改―合并"模型會帶來沖突的問題用于解決沖突的時間遠遠少于鎖定系統(tǒng)所帶來的時間浪費。
沒有系統(tǒng)可以強制用戶完美的交流,沒有系統(tǒng)可以檢測語義上的沖突解決沖突的關(guān)鍵是用戶交流26使用SVN進行版本控制"復(fù)制―修改―合并"模型會帶來沖突的使用SVN進行版本控制"鎖定-修改-解鎖"模型被認為不利于協(xié)作,但有時候鎖定會更好。"拷貝-修改-合并"模型假定文件是可以根據(jù)上下文合并的:就是版本庫的文件主要是以行為基礎(chǔ)的文本文件(例如程序源代碼)。但對于二進制格式,例如圖片或聲音,在這種情況下,十分有必要讓用戶輪流修改文件,如果沒有線性的訪問,有些人的許多工作就最終要被放棄。SVN也支持"鎖定-修改-解鎖"模型。27使用SVN進行版本控制"鎖定-修改-解鎖"模型被認為不利于協(xié)使用SVN進行版本控制工作副本W(wǎng)orkingCopies修訂版
Revision混合型修訂版28使用SVN進行版本控制工作副本W(wǎng)orkingCopies使用SVN進行版本控制
一個
Subversion的工作副本其實就是本地系統(tǒng)中的一個普通的文件目錄樹??梢允褂萌魏畏绞絹砭庉嬤@些文件。如果是源代碼文件的話,你也可以像通常情況那樣去編譯它們。
工作副本是你的私人工作區(qū)。如果你不明確的要求,Subversion絕不會合并其他人的修改,也不會讓其他人看到你做的修改。29使用SVN進行版本控制一個Subversion的工作副使用SVN進行版本控制在你已經(jīng)修改完工作副本中的文件,并且確信修改正確后,就可以將這些修改公開給同一個項目中的其他工作人員。Subversion提供了將文件寫入倉庫的命令。工作副本中也包含一些額外的文件。它們是由
Subversion創(chuàng)建和維護的,用來輔助完成這些命令。最典型的情況是,每一個目錄都包含一個叫做.svn的子目錄
。該目錄也被稱為“工作副本管理目錄”。
一個
Subversion的倉庫會包含幾個項目,而每一個項目都是倉庫的目錄的一個子目錄。這樣,用戶的工作副本也就對應(yīng)于倉庫中一個特定的子目錄。
30使用SVN進行版本控制在你已經(jīng)修改完工作副本中的文件,并且確使用SVN進行版本控制
一個
svncommit操作可以將任意數(shù)量的文件和目錄的修改發(fā)布作為一個單獨的原子事務(wù)來處理。在倉庫中,每一次提交都被作為一個原子事務(wù)來對待。每當(dāng)倉庫接受一次提交,倉庫中的文件系統(tǒng)目錄都會創(chuàng)建一種新的狀態(tài),叫做一個修訂版。
每一個修訂本都被賦予一個唯一的自然數(shù),并且每一個修訂版的數(shù)字都比前一個要大。剛剛建立的倉庫的初始的版本是0,只包含一個空的根目錄。
Subversion的修訂版編號是針對整個目錄樹的,而不是某一個獨立的文件。如圖所示:31使用SVN進行版本控制一個svncommit操作可以使用SVN進行版本控制設(shè)想一個修訂版編號的數(shù)列,從0開始,從左延伸到右。每一個修訂版編號都對應(yīng)一個畫下面的目錄樹,而每一個目錄樹就是在每一次提交之后的倉庫的"快照"。32使用SVN進行版本控制設(shè)想一個修訂版編號的數(shù)列,從0開始使用SVN進行版本控制一般的原則上,Subversion努力使自己盡可能的靈活。一個典型的靈活性的體現(xiàn)就是允許工作副本中包含有混合的修訂版編號的能力。
在完成向倉庫的提交之后,剛剛提交的文件和目錄就擁有了最新的修訂版編號,而其他文件沒有。
33使用SVN進行版本控制一般的原則上,Subversion努使用SVN進行版本控制svncvsvss工作模式Copy-Modify-MergeCopy-Modify-MergeLock-Modify-Unlock粒度目錄級文件級文件級訪問存儲庫方式本地文件、專有服務(wù)器、webdav本地文件、專有服務(wù)器本地文件訪問授權(quán)基于apache目錄授權(quán)CVSACL專有管理工具分支和標(biāo)記支持,高效實現(xiàn)支持不支持使用方式多種專有工具、IDE集成、命令行多種專有工具、IDE集成、命令行專用工具,使用方便分支、標(biāo)記處理高效實現(xiàn),相同文件在實現(xiàn)時通過鏈接實現(xiàn),不占用額外空間不同分支、標(biāo)記中相同文件需占不同空間無分支、標(biāo)記概念34使用SVN進行版本控制svncvsvss工作模式Copy-M使用SVN進行版本控制基本術(shù)語主要講解SVN客戶端工具的常用命令通過本部分的學(xué)習(xí),可以操作所有任務(wù)在日常使用subversion版本控制系統(tǒng)35使用SVN進行版本控制基本術(shù)語35使用SVN進行版本控制基本修訂版(revision)存儲庫接受的每一次修改產(chǎn)生新的修訂版HEAD:存儲庫中最新版本BASE:工作拷貝中一個條目的修訂版本號,如果這個版本在本地修改了,則“BASE版本”就是這個條目在本地未修改的版本。分支(branches)標(biāo)記(tags)合并(merging)36使用SVN進行版本控制基本修訂版(revision)36使用SVN進行版本控制命令行工具通過命令行方式,主要命令包括:svn:基本svn命令svnadmin:存儲庫管理svnlook:存儲庫查看TortoiseSVN與windows資源管理器集成subclipse與eclipse集成37使用SVN進行版本控制命令行工具37使用SVN進行版本控制import將本地目錄導(dǎo)入存儲庫checkout從存儲庫創(chuàng)建目錄樹的本地工作拷貝update將存儲庫中文件同步到本地工作拷貝中commit本地工作拷貝中文件修改提交到存儲庫中add將本地文件加入到存儲庫中remove從存儲庫中刪除一個文件(保留歷史記錄).move在存儲庫中講一個文件移到另一個位置38使用SVN進行版本控制import38使用SVN進行版本控制存儲庫項目名trunk:主版本branches:分支版本(獨立版本)tags:標(biāo)記版本,比如發(fā)行版v1.0/v2.0等等39使用SVN進行版本控制存儲庫39使用SVN進行版本控制
工作拷貝存儲庫CommitUpdate未修改未修改未修改已修改從存儲庫中取出最新版本已修改未修改將本地修改提交到存儲庫中已修改已修改可能沖突將存儲庫的修改合并到工作拷貝中40使用SVN進行版本控制工作拷貝存儲庫CommitUpdat使用SVN進行版本控制HelpImportCheckout基本的工作周期:UpdateyourworkingcopysvnupdateMakechangesadddeletecopymove41使用SVN進行版本控制Help41使用SVN進行版本控制ExamineyourchangesstatusdiffrevertMergeothers’changesMergeResolvedCommityourchangescommit42使用SVN進行版本控制Examineyourchange使用SVN進行版本控制import:提交未納入版本控制的文件或目錄樹至檔案庫用法:import[PATH]URL遞歸地提交PATH的拷貝至地址(URL)。如果省略PATH,默認為‘.’。父目錄會依需要于檔案庫內(nèi)建立。舉例:svnimport./kav8-m"addkav8"43使用SVN進行版本控制import:提交未納入版本控制的文使用SVN進行版本控制
CentralRepositoryLocalWorkspace(s)AimportACentralRepositoryLocalWorkspace(s)Abeforeafterinsync44使用SVN進行版本控制CentralRepository使用SVN進行版本控制checkout(co):從repository中取出文檔,在本機建立工作副本(workingcopy)開始工作前的前置動作用法:checkoutURL[PATH]例如:svnco45使用SVN進行版本控制checkout(co):從rep使用SVN進行版本控制
CentralRepositoryLocalWorkspace(s)checkoutACentralRepositoryLocalWorkspace(s)AbeforeafterinsyncA46使用SVN進行版本控制CentralRepository使用SVN進行版本控制Export:導(dǎo)出一個無版本控制的目錄樹副本用法:
svnexport[-rREV]URL[@PEGREV][PATH]
svnexport[-rREV]PATH1[@PEGREV][PATH2]例如:
svnexportExport與Checkout的區(qū)別 export導(dǎo)出的副本無svn附加文件,不在服務(wù)器的版本控制下 checkout會在本地建立一個工作區(qū),可以修改和提交47使用SVN進行版本控制Export:導(dǎo)出一個無版本控制的目錄使用SVN進行版本控制將repository上的版本整合到本地端的工作副本(workspace)可能會出現(xiàn)沖突,需要手動解決用法:update[PATH...]例如: svnupdate
Atrevision25.48使用SVN進行版本控制將repository上的版本整合到本使用SVN進行版本控制
CentralRepositoryLocalWorkspace(s)updateA’CentralRepositoryLocalWorkspace(s)A’beforeafterinsyncA’A49使用SVN進行版本控制CentralRepository使用SVN進行版本控制提交操作使workspace與repository保持同步本地端的修改包含:文件內(nèi)容修改、文件目錄刪除需要發(fā)布到repository時用法:commit[PATH...]–mLOG_MSG日志信息必須提供,但可以是空的例如: svnci-m"addaword" Sendingdir1/222 Transmitting. Committedrevision26.50使用SVN進行版本控制提交操作使workspace與repo使用SVN進行版本控制
CentralRepositoryLocalWorkspace(s)commitA’CentralRepositoryLocalWorkspace(s)A’beforeafterinsyncAA’51使用SVN進行版本控制CentralRepository使用SVN進行版本控制最好能夠一次提交概念性、功能性或任務(wù)性的修改確保源代碼編譯通過52使用SVN進行版本控制最好能夠一次提交概念性、功能性或任務(wù)性使用SVN進行版本控制Add:增加文件或者目錄到資源庫中,然后commit。條件是該文件或者目錄已經(jīng)在相應(yīng)的目錄上。Delete刪除在庫中的文件或者目錄,然后commit。Copy拷貝文件,然后commitMove移動文件或目錄到另外目錄中,相當(dāng)于拷貝、刪除的組合。以上的命令是針對工作副本進行的,所以要commit才有效53使用SVN進行版本控制Add:53使用SVN進行版本控制Status顯示工作拷貝目錄與文件的狀態(tài)。用法:status[PATH...]
svnstatuswc
Mwc/bar.cAwc/qax.cDiffdiff(di):顯示兩個路徑中的差異
svndiff-r19:25Project.javaRevert恢復(fù)原始未改變的工作拷貝文件(恢復(fù)大部份的本地修改)
54使用SVN進行版本控制Status54使用SVN進行版本控制Merge將兩個來源之間的差異應(yīng)用至工作拷貝路徑
Resolved移除工作拷貝的目錄或文件的'沖突'狀態(tài)
55使用SVN進行版本控制Merge55使用SVN進行版本控制CleanupListCatLogmkdir56使用SVN進行版本控制Cleanup56使用SVN進行版本控制'A’預(yù)定要添加的項目。'D’預(yù)定要刪除的項目。'M’項目已經(jīng)修改了?!甎’文件更新了(從服務(wù)器收到修改)'R’項目在工作拷貝中已經(jīng)被替換了。這意味著文件預(yù)定要刪除,然后有一個同樣名稱的文件要在同一個位置替換它?!瓹‘項目的內(nèi)容(相對于屬性)與更新得到的數(shù)據(jù)沖突了。'?’項目不在版本控制之下?!?‘項目已經(jīng)丟失(例如,你使用svn移動或者刪除了它)。這也說明了一個目錄不是完整的(一個檢出或更新中斷)。
57使用SVN進行版本控制'A’預(yù)定要添加的項目。57使用SVN進行版本控制獨立于主干(trunk)的“新項目”新項目開始于某一穩(wěn)定版本的revision,通過revisioncopy得到分支的基本概念—正如它的名字,開發(fā)的一條線獨立于另一條線,如果回顧歷史,可以發(fā)現(xiàn)兩條線分享共同的歷史例子: svncp-m“createbranchfromr101"58使用SVN進行版本控制獨立于主干(trunk)的“新項目”5使用SVN進行版本控制開發(fā)可能會對主分支產(chǎn)生影響從某一版本產(chǎn)生獨立的“特殊”產(chǎn)品解決BUG增加新功能59使用SVN進行版本控制開發(fā)可能會對主分支產(chǎn)生影響59使用SVN進行版本控制與BRANCH類似,給穩(wěn)定的版本做記號一個標(biāo)簽只是一個項目某一時間的“快照”,在Subversion里這個概念無處不在—每一次提交的修訂版本都是一個精確的快照。從TAG中取出的代碼可以編譯成獨立的產(chǎn)品一般與Release產(chǎn)品一一對應(yīng)例子:svncptag_release_3_0-m“createtagfromr101"60使用SVN進行版本控制與BRANCH類似,給穩(wěn)定的版本做記號使用SVN進行版本控制branch和tag,對于svn都是使用copy實現(xiàn)的,所以他們在默認的權(quán)限上和一般的目錄沒有區(qū)別。至于何時用tag,何時用branch,完全由人主觀的根據(jù)規(guī)范和需要來選擇,而不是強制的。一般情況下,tag,是用來做一個milestone的,不管是不是release,都是一個可用的版本。這里,應(yīng)該是只讀的。更多的是一個顯示用的,給人一個可讀(readable)的標(biāo)記。Branch是用來做并行開發(fā)的,這里的并行是指和trunk進行比較。例如:3.0開發(fā)完成,這個時候要做一個tag,tag_release_3_0,然后基于這個tag做release。trunk進入3.1的開發(fā),但是3.0發(fā)現(xiàn)了bug,那么就需要基于tag_release_3_0做一個branch,branch_bugfix_3_0,基于這個branch進行bugfix,等到bugfix結(jié)束,做一個tag,tag_release_3_0_1,然后,根據(jù)需要決定branch_bugfix_3_0是否并入trunk。61使用SVN進行版本控制branch和tag,對于svn都是使使用SVN進行版本控制合并BRANCH的修改到TRUNK合并主分支的最新版本到工作副本BUG修正后將BUG去除的代碼合并到其他“特殊”BRANCH可以用來恢復(fù)舊版本merge:Applythedifferencesbetweentwosourcestoaworkingcopypath.
usage: 1.mergesourceURL1[@N]sourceURL2[@M][WCPATH]
2.mergesourceWCPATH1@NsourceWCPATH2@M[WCPATH]
3.merge[-cM|-rN:M]SOURCE[@REV][WCPATH]。其實,第一個URL(稱之為左邊),為起始狀態(tài);第二個URL(稱之為右邊),為最終狀態(tài),取最新的;最后一個是接收區(qū)別的工作拷貝(通常叫做合并的目標(biāo))。62使用SVN進行版本控制合并BRANCH的修改到TRUNK62使用SVN進行版本控制svn沒有恢復(fù)舊版本的直接功能,不過可以使用svn
merge命令恢復(fù)。例子:當(dāng)前HEAD為14,而我要恢復(fù)成10版本,怎么做?用svn
merge:
svnupdate
svn
merge--revision14:10[PATH]
svncommit-m"restoretorevision10”Merge原理是比較指定版本的差異,然后把這些差異應(yīng)用到本地工作副本,而-r后的14:10,是指相對于版本14來說版本10的變化(注意,這個版本的次序很重要。),也就是相對版本14,版本10添加了哪些文件或目錄,以及哪些文件添加了哪些行刪除了哪些行。又因為本地版本是最新的14,所以把這些差異應(yīng)用到本地版本時就等于把14改變成10,其效果等于還原到版本10。63使用SVN進行版本控制svn沒有恢復(fù)舊版本的直接功能,不過可使用SVN進行版本控制產(chǎn)生原因當(dāng)團隊協(xié)同工作的時候,多人同時操作一個文件。當(dāng)有人操作完成后,將該文件提交到SVN上。這樣,其他人的本地文件與SVN上的文件版本不一致。當(dāng)另一人操作完成后,提交該文件時,就會出現(xiàn)沖突對于每一個沖突的文件,Subversion放置三個額外的未版本化文件到你的工作拷貝:
更新前的文件,最新更改的內(nèi)容。
更新操作以前的BASE版本文件,在上次更新之后未作更改的版本。
服務(wù)器的版本,對應(yīng)版本庫的HEAD版本。這里OLDREV是本地.svn目錄中的修訂版本號,NEWREV是版本庫中HEAD的版本號。64使用SVN進行版本控制產(chǎn)生原因64使用SVN進行版本控制面對文件沖突,您可以選擇以下三種方式解決沖突:1. “手動”合并沖突文本(檢查和修改文件中的沖突標(biāo)志)。--需要團隊成員交流2. 如果希望取消自己的修改,可以拷貝Subversion為你生成的文件替換你的工作拷貝用某一個臨時文件覆蓋你的工作文件。3. 運行svnrevert<>來放棄所有的修改。解決了重提之后,運行svnresolved,刪除了臨時文件,之后可以提交了。65使用SVN進行版本控制面對文件沖突,您可以選擇以下三種方式解使用SVN進行版本控制養(yǎng)成良好的習(xí)慣,在修改文件之前,先進行一次update操作當(dāng)修改完成后,及時commit,不要在本地停留時間過長在多人協(xié)作時,盡量修改自己撰寫的部分,不要修改其他部分多人協(xié)作時,增加交流出現(xiàn)沖突很正常,可以通過前面的三個方法解決,不要相互覆蓋66使用SVN進行版本控制養(yǎng)成良好的習(xí)慣,在修改文件之前,先進行使用SVN進行版本控制TortoiseSVN介紹TortoiseSVN的使用67使用SVN進行版本控制67使用SVN進行版本控制Windows操作系統(tǒng)客戶端圖形化界面,集成了svn和svnadmin命令行工具的功能。該客戶端集成于資源管理器功能中,使用方便,易于掌握。網(wǎng)上可搜索下載,直接安裝TortoiseSVN-9898-win32-svn-1.6.12.msi,方法同一般軟件安裝相同68使用SVN進行版本控制Windows操作系統(tǒng)客戶端68使用SVN進行版本控制一旦該客戶端安裝成功,在指定目錄單擊右鍵,彈出菜單中,增加了幾項,如圖所示:69使用SVN進行版本控制一旦該客戶端安裝成功,在指定目錄單擊使用SVN進行版本控制如上圖所示,在資源管理器菜單中增加了,svn
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商業(yè)地下停車位租賃合同協(xié)議
- 3食物的消化(教學(xué)設(shè)計)-2023-2024學(xué)年科學(xué)六年級上冊粵教版
- 版權(quán)許可合同 廣播電視節(jié)目播放權(quán)許可合同
- 地下停車場使用合同
- 2023-2024學(xué)年陜教版小學(xué)信息技術(shù)三年級下冊 第一單元 第3課 認識鍵盤大家族(教學(xué)設(shè)計)
- 機械施工勞務(wù)合同范本
- 7《健康看電視》(教學(xué)設(shè)計)2024-2025學(xué)年統(tǒng)編版道德與法治四年級上冊
- 5 玲玲的畫(教學(xué)設(shè)計)-2024-2025學(xué)年統(tǒng)編版語文二年級上冊
- 借款經(jīng)營合同范本
- 贈與過戶合同范本
- 自建房-預(yù)算表
- 合約部年終工作總結(jié)
- 【人教版】pep六年級英語下全冊教案(表格版)
- 森林質(zhì)量精準(zhǔn)提升項目(2024年度)作業(yè)設(shè)計
- 北師大版小學(xué)數(shù)學(xué)五年級下冊同步課時練習(xí)試題含答案(全冊)
- 戰(zhàn)馬魂(2023年重慶A中考語文試卷記敘文閱讀題及答案)
- 2024年全國職業(yè)院校技能大賽中職組(法律實務(wù)賽項)考試題庫-下(多選、判斷題)
- 區(qū)塊鏈應(yīng)用操作員技能大賽考試題庫大全-下(多選、判斷題)
- 二 《“友邦驚詫”論》(同步練習(xí))解析版
- 施工技術(shù)交底(電氣安裝)
- 污水處理廠TOT項目招標(biāo)文件模板
評論
0/150
提交評論