使用SVN進(jìn)行版本控制 (2)_第1頁
使用SVN進(jìn)行版本控制 (2)_第2頁
使用SVN進(jìn)行版本控制 (2)_第3頁
使用SVN進(jìn)行版本控制 (2)_第4頁
使用SVN進(jìn)行版本控制 (2)_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費(fèi)閱讀

VIP免費(fèi)下載

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

文檔簡介

1、.使用SVN進(jìn)行版本控制.摘 要一、Subversion簡介二、版本控制的基本知識三、Subversion常用功能四、客戶端工具TortoiseSVN五、SVN使用中常見問題.一、Subversion簡介 版本控制是管理信息變更的一門藝術(shù) 版本控制工具早已經(jīng)成為許多程序員的主要工具之一 版本控制軟件的用途并不僅限于軟件開發(fā)的領(lǐng)域 ,只要人們使用計(jì)算機(jī)來管理經(jīng)常變更的信息,就需要使用版本控制工具 協(xié)同工作,大大提高團(tuán)隊(duì)工作效率 及時(shí)了解團(tuán)隊(duì)中其他成員的進(jìn)度 資料共享 記錄每個(gè)文件從誕生到最終完成全過程的每步細(xì)節(jié).什么是Subversion? Subversion 是一個(gè)自由的、開放源碼的版本控制

2、系統(tǒng) 它可以管理各個(gè)時(shí)刻的文件和目錄 Subversion 將文件存放在repository庫中。這個(gè)倉庫非常類似于一個(gè)普通的文件服務(wù)器 ,只是它還可以記錄文件和目錄曾經(jīng)做過的每一次變更 Subversion允許你數(shù)據(jù)恢復(fù)到早期版本,或者是檢查數(shù)據(jù)修改的歷史,可把版本控制系統(tǒng)比作一種“時(shí)間機(jī)器”.什么是Subversion? Subversion的倉庫可以通過網(wǎng)絡(luò)來訪問,允許不同的用戶在不同的計(jì)算機(jī)上使用 。 不同的使用者可以進(jìn)行協(xié)同工作 。而且所有工作都是有記錄的,如果有錯(cuò)只要撤銷就可以。 Subversion只是版本控制系統(tǒng),不是軟件配置管理系統(tǒng)(SCM) 。它是一個(gè)通用系統(tǒng),可以管理任何

3、類型的文件集 它是一個(gè)通道,可以管理任何計(jì)算機(jī)中的文件系統(tǒng)。.Subversion的歷史 CVS有明顯的局限性和功能上的不足。 2000年開始 ,CollabNet公司 就開始著手開發(fā)新的版本控制系統(tǒng)來代替CVS。 Karl Fogel 和Jim Blandy 是CVS開發(fā)者,加入到開發(fā)subversion當(dāng)中。 他們讓 Subversion 來使用 CVS 的特性,并且保留相同的開發(fā)模型 ,但是避開 CVS 的那些明顯的缺陷 。 Subversion 于2001年8月進(jìn)入“自測”階段 。.Subversion的特色 目錄控制 CVS 只能跟蹤單個(gè)文件的歷史,而 Subversion 實(shí)現(xiàn)了一

4、個(gè)虛擬的受控文件系統(tǒng),可以跟蹤整個(gè)目錄的變更。 真正的版本歷史 由于 CVS 只限于記錄文件的版本信息,像文件復(fù)制、重命名這樣的操作它就不支持 ,在 Subversion 中我們可以添加、刪除、復(fù)制和重命名文件和目錄 。.Subversion的特色 原子化提交 一個(gè)變更集要么完整地被提交到倉庫中,要么不做任何改變 ,從而避免發(fā)生不完整地提交變更的情況 。 受控元數(shù)據(jù) 每一個(gè)文件和目錄都有一個(gè)與其對應(yīng)的屬性集 。 可選的網(wǎng)絡(luò)層 Subversion 倉庫的存取是一個(gè)抽象概念,有利于其他人實(shí)現(xiàn)新的網(wǎng)絡(luò)訪問機(jī)制 ,Subversion 可以作為一個(gè)外部模塊插入到 Apache HTTP 服務(wù)器中 。

5、.Subversion的特色 一致的數(shù)據(jù)處理 Subversion 使用一種二進(jìn)制的比較算法來表示文件之間的區(qū)別 。 高效的分支和標(biāo)記 分支和標(biāo)記所帶來的開銷與項(xiàng)目的規(guī)模并沒有直接的關(guān)系 ,Subversion 在創(chuàng)建分支和標(biāo)記時(shí)使用類似“連接”的方式來復(fù)制項(xiàng)目 。 擴(kuò)展能力 它是由一組設(shè)計(jì)良好的 APIs實(shí)現(xiàn)的,包含在 C 的共享庫中 ,這使得它很容易維護(hù)。也很容易被其他應(yīng)用程序或語言使用 .Subversion的體系結(jié)構(gòu).Subversion的體系結(jié)構(gòu) 典型的client/server模式結(jié)構(gòu) 在系統(tǒng)的一端是存放著所有受控制數(shù)據(jù)的 Subversion 倉庫。 另一端是 Subversio

6、n 的客戶端程序,管理著受控?cái)?shù)據(jù)的一部分在本地的映射(稱為“工作副本”)。 在這兩端之間,是通過各種倉庫存取層(Repository Access,RA)的多條通道。這些通道中,有些要使用計(jì)算機(jī)網(wǎng)絡(luò),再通過用來訪問 Subversion 倉庫的服務(wù)器。而有些則完全繞過了網(wǎng)絡(luò),直接對倉庫進(jìn)行操作 。.Subversion的組件 Svn 一個(gè)命令行的客戶端程序 Svnversion 報(bào)告本地工作副本狀態(tài)(當(dāng)前檔案的修訂版本號表示)的程序 Svnadmin 用來創(chuàng)建或者是修復(fù)倉庫的工具 svndumpfilter 過濾資源庫程序.Subversion的組件 mod_dav_svn Apache 服務(wù)

7、器的一個(gè)插件模塊,用來使其他人可以通過網(wǎng)絡(luò)訪問這個(gè)倉庫 svnserve 一個(gè)定制的、獨(dú)立的 Subversion 服務(wù)程序??勺鳛橐粋€(gè)駐留進(jìn)程運(yùn)行或者是由 SSH 調(diào)用。是使倉庫可以被別人通過網(wǎng)絡(luò)訪問的另一種方法 常用的組件是svn和svnadmin,有圖形化客戶端來實(shí)現(xiàn)svn和svnadmin功能。.訪問資源庫的幾種方式樣式 存取方式 直接從本地磁盤上訪問倉庫http:/ 通過 WebDAV 協(xié)議訪問 Apache 服務(wù)器而訪問倉庫https:/ 和 http:/ 相同,但使用 SSL 來作加密svn:/ 通過svnserve服務(wù)自定義的協(xié)議svn+ssh:/ 和 svn:/ 相同,但通過

8、SSH封裝.資源庫的URL解析 所有被Subversion管理的目錄、文件有唯一路徑 支持的協(xié)議有http,https,svn,svns,file88/svn/kexie/proj/account/trunk/protocolhostrepositorydirectory.SVN服務(wù)器端數(shù)據(jù)目錄 dav目錄:提供給Apache與mod_dav_svn使用的目錄,存儲內(nèi)部數(shù)據(jù) db目錄:所有版本控制的數(shù)據(jù)存放文件 hooks目錄:放置hook腳本文件的目錄 locks目錄:用來放置Subversion文件庫鎖定數(shù)據(jù)的目錄,用來追蹤存取文件庫的客戶端 format文

9、件:一個(gè)文本文件,記錄文件庫配置的版本號 conf目錄:是這個(gè)倉庫的配置文件(倉庫的用戶訪問帳號、權(quán)限等).二、版本控制的基本知識 倉庫(The Repository) 版本控制模型 實(shí)際工作中的subversion subversion/cvs/vss比較.倉庫(The Repository) Subversion 是一個(gè)集中式的系統(tǒng)。它的核心是一個(gè)用來存放數(shù)據(jù)的中心倉庫。中心倉庫使用典型的文件和目錄層次結(jié)構(gòu)樹狀結(jié)構(gòu)來存儲信息。 許許多多的客戶端可以連接到中心倉庫,然后讀取或者寫入文件 。 客戶端通過寫文件來使其他人共享,也可以讀取其它客戶端所寫入的文件。 典型的客戶端/服務(wù)器系統(tǒng)模型 ,如

10、圖所示:.倉庫(The Repository) .倉庫(The Repository) 倉庫就是一種文件服務(wù)器,只是不是通常的那種 。 Subversion 倉庫可以記錄寫入倉庫的每一次更改 。 這些更改包括對每一個(gè)文件的每一次修改,甚至是對目錄本身的修改,例如添加文件、刪除文件和對文件和目錄的重新編排。這些特性使得 Subversion 倉庫與一般的文件服務(wù)器相比較為特殊。 客戶端同樣可以讀取文件和目錄以前某個(gè)時(shí)刻的狀態(tài) 。 版本控制系統(tǒng)的核心:記錄和跟蹤數(shù)據(jù)的修改歷史 .版本控制模型 版本控制系統(tǒng)的核心任務(wù)是使得數(shù)據(jù)可以協(xié)作處理和共享。但是不同的系統(tǒng)使用不同的策略來達(dá)到這個(gè)目標(biāo) 。 文件共

11、享的問題 :怎樣讓系統(tǒng)允許用戶共享信息,而不會讓他們因意外而互相干擾? 鎖定修改解鎖方案 復(fù)制修改合并方案 .鎖定修改解鎖方案 許多版本控制系統(tǒng)都使用“鎖定修改解鎖”模型來解決這個(gè)問題 ,諸如:VSS 在這樣一個(gè)系統(tǒng)中,倉庫在一個(gè)特定的時(shí)刻只允許一個(gè)人對某個(gè)文件進(jìn)行修改 。 這種方案的問題是它有一點(diǎn)過于嚴(yán)格了,經(jīng)常會阻塞用戶的使用 。 鎖定可能會帶來管理問題 。 鎖定可能導(dǎo)致不必要的串行工作 。 鎖定可能導(dǎo)致錯(cuò)誤的安全狀態(tài),文件可能相互依賴.復(fù)制修改合并方案 Subversion、CVS以及其他一些版本控制系統(tǒng)使用“復(fù)制修改合并”模型來代替鎖定 。 每一個(gè)用戶的客戶端軟件從中央倉庫創(chuàng)建出一份個(gè)

12、人的工作副本倉庫中文件和目錄的本地映射 。 用戶就可以并行工作,修改手中的私有副本 。 這些私有副本合并成為一個(gè)全新的版本 。 版本控制系統(tǒng)常常需要合并,但是最終,操作者本身必須負(fù)責(zé)讓合并工作正確進(jìn)行 。.沖突(conflict) 復(fù)制修改合并模型會帶來沖突的問題 用于解決沖突的時(shí)間遠(yuǎn)遠(yuǎn)少于鎖定系統(tǒng)所帶來的時(shí)間浪費(fèi)。 沒有系統(tǒng)可以強(qiáng)制用戶完美的交流,沒有系統(tǒng)可以檢測語義上的沖突 解決沖突的關(guān)鍵是用戶交流.模型選擇 鎖定-修改-解鎖模型被認(rèn)為不利于協(xié)作,但有時(shí)候鎖定會更好。 拷貝-修改-合并模型假定文件是可以根據(jù)上下文合并的:就是版本庫的文件主要是以行為基礎(chǔ)的文本文件(例如程序源代碼)。但對于二

13、進(jìn)制格式,例如圖片或聲音,在這種情況下,十分有必要讓用戶輪流修改文件,如果沒有線性的訪問,有些人的許多工作就最終要被放棄。 SVN也支持鎖定-修改-解鎖模型。.實(shí)際中的 Subversion 工作副本W(wǎng)orking Copies 修訂版 Revision 混合型修訂版.工作副本 一個(gè) Subversion 的工作副本其實(shí)就是本地系統(tǒng)中的一個(gè)普通的文件目錄樹 。 可以使用任何方式來編輯這些文件。如果是源代碼文件的話,你也可以像通常情況那樣去編譯它們。 工作副本是你的私人工作區(qū) 。 如果你不明確的要求,Subversion 絕不會合并其他人的修改,也不會讓其他人看到你做的修改 。.工作副本 在你已

14、經(jīng)修改完工作副本中的文件,并且確信修改正確后,就可以將這些修改公開給同一個(gè)項(xiàng)目中的其他工作人員。Subversion 提供了將文件寫入倉庫的命令 。 工作副本中也包含一些額外的文件。它們是由 Subversion 創(chuàng)建和維護(hù)的,用來輔助完成這些命令。 最典型的情況是,每一個(gè)目錄都包含一個(gè)叫做 .svn 的子目錄 。該目錄也被稱為“工作副本管理目錄”。 一個(gè) Subversion 的倉庫會包含幾個(gè)項(xiàng)目,而每一個(gè)項(xiàng)目都是倉庫的目錄的一個(gè)子目錄。這樣,用戶的工作副本也就對應(yīng)于倉庫中一個(gè)特定的子目錄。 .SVN的修訂版 一個(gè) svn commit 操作可以將任意數(shù)量的文件和目錄的修改發(fā)布作為一個(gè)單獨(dú)的

15、原子事務(wù)來處理 。 在倉庫中,每一次提交都被作為一個(gè)原子事務(wù)來對待 。 每當(dāng)倉庫接受一次提交,倉庫中的文件系統(tǒng)目錄都會創(chuàng)建一種新的狀態(tài),叫做一個(gè)修訂版。 每一個(gè)修訂本都被賦予一個(gè)唯一的自然數(shù),并且每一個(gè)修訂版的數(shù)字都比前一個(gè)要大。剛剛建立的倉庫的初始的版本是 0 ,只包含一個(gè)空的根目錄。 Subversion 的修訂版編號是針對整個(gè)目錄樹的,而不是某一個(gè)獨(dú)立的文件 。 如圖所示:.修訂版設(shè)想一個(gè)修訂版編號的數(shù)列,從 0 開始,從左延伸到右。每一個(gè)修訂版編號都對應(yīng)一個(gè)畫下面的目錄樹,而每一個(gè)目錄樹就是在每一次提交之后的倉庫的快照。.混合型修訂版 一般的原則上,Subversion 努力使自己盡可

16、能的靈活。一個(gè)典型的靈活性的體現(xiàn)就是允許工作副本中包含有混合的修訂版編號的能力。 在完成向倉庫的提交之后,剛剛提交的文件和目錄就擁有了最新的修訂版編號,而其他文件沒有。 .subversion/cvs/vss比較svncvsvss工作模式Copy-Modify-MergeCopy-Modify-MergeLock-Modify-Unlock粒度目錄級文件級文件級訪問存儲庫方式本地文件、專有服務(wù)器、webdav本地文件、專有服務(wù)器本地文件訪問授權(quán)基于apache目錄授權(quán)CVSACL專有管理工具分支和標(biāo)記支持,高效實(shí)現(xiàn)支持不支持使用方式多種專有工具、IDE集成、命令行多種專有工具、IDE集成、命令

17、行專用工具,使用方便分支、標(biāo)記處理高效實(shí)現(xiàn),相同文件在實(shí)現(xiàn)時(shí)通過鏈接實(shí)現(xiàn),不占用額外空間不同分支、標(biāo)記中相同文件需占不同空間無分支、標(biāo)記概念.三、 Subversion常用功能講解 基本術(shù)語 主要講解SVN 客戶端工具的常用命令 通過本部分的學(xué)習(xí),可以操作所有任務(wù)在日常使用subversion版本控制系統(tǒng).術(shù)語 基本修訂版(revision) 存儲庫接受的每一次修改產(chǎn)生新的修訂版 HEAD:存儲庫中最新版本 BASE:工作拷貝中一個(gè)條目的修訂版本號,如果這個(gè)版本在本地修改了,則“BASE版本”就是這個(gè)條目在本地未修改的版本。 分支(branches) 標(biāo)記(tags) 合并(merging).

18、Subversion客戶端工具 命令行工具 通過命令行方式,主要命令包括: svn:基本svn命令 svnadmin:存儲庫管理 svnlook:存儲庫查看 TortoiseSVN 與windows資源管理器集成 subclipse 與eclipse集成.Subversion常用操作import將本地目錄導(dǎo)入存儲庫checkout從存儲庫創(chuàng)建目錄樹的本地工作拷貝update將存儲庫中文件同步到本地工作拷貝中commit本地工作拷貝中文件修改提交到存儲庫中add將本地文件加入到存儲庫中remove從存儲庫中刪除一個(gè)文件 (保留歷史記錄).move在存儲庫中講一個(gè)文件移到另一個(gè)位置.Subvers

19、ion推薦目錄結(jié)構(gòu) 存儲庫 項(xiàng)目名 trunk:主版本 branches:分支版本(獨(dú)立版本) tags:標(biāo)記版本,比如發(fā)行版 v 1.0/ v 2.0等等.工作拷貝、存儲庫同步的狀態(tài) 工作拷貝存儲庫CommitUpdate未修改未修改未修改已修改從存儲庫中取出最新版本已修改未修改將本地修改提交到存儲庫中已修改已修改可能沖突將存儲庫的修改合并到工作拷貝中.Svn常用命令介紹HelpImportCheckout基本的工作周期:Update your working copy svn updateMake changes add delete copy move.Svn常用命令介紹Examine

20、your changes status diff revertMerge others changes Merge ResolvedCommit your changes commit.IMPORTimport: 提交未納入版本控制的文件或目錄樹至檔案庫 用法:import PATH URL 遞歸地提交 PATH 的拷貝至地址(URL)。如果省略 PATH,默認(rèn)為 .。父目錄會依需要于檔案庫內(nèi)建立。舉例:svn import ./kav8 -m add kav8.IMPORT Central RepositoryLocal Workspace(s)AimportACentral Reposit

21、oryLocal Workspace(s)Abeforeafterin sync.CHECKOUTcheckout (co): 從repository中取出文檔,在本機(jī)建立工作副本(working copy)開始工作前的前置動作用法:checkout URL PATH例如:svn co .CHECKOUT Central RepositoryLocal Workspace(s)checkoutACentral RepositoryLocal Workspace(s)Abeforeafterin syncA.EXPORTExport:導(dǎo)出一個(gè)無版本控制的目錄樹副本用法: svn export -

22、r REV URLPEGREV PATHsvn export -r REV PATH1PEGREV PATH2例如: svn export Export與Checkout的區(qū)別export導(dǎo)出的副本無svn附加文件,不在服務(wù)器的版本控制下checkout會在本地建立一個(gè)工作區(qū),可以修改和提交.UPDATE將repository上的版本整合到本地端的工作副本(workspace)可能會出現(xiàn)沖突,需要手動解決用法:update PATH. 例如:svn update At revision 25.UPDATE Central RepositoryLocal Workspace(s)updateAC

23、entral RepositoryLocal Workspace(s)Abeforeafterin syncAA.COMMIT提交操作使workspace與repository保持同步本地端的修改包含:文件內(nèi)容修改、文件目錄刪除需要發(fā)布到repository時(shí)用法:commit PATH. m LOG_MSG 日志信息必須提供,但可以是空的 例如:svn ci -m add a wordSending dir1/222Transmitting .Committed revision 26.COMMIT Central RepositoryLocal Workspace(s)commitACen

24、tral RepositoryLocal Workspace(s)Abeforeafterin syncAA.COMMIT最好能夠一次提交概念性、功能性或任務(wù)性的修改確保源代碼編譯通過.做出修改(Make changes)Add:增加文件或者目錄到資源庫中,然后commit。條件是該文件或者目錄已經(jīng)在相應(yīng)的目錄上。Delete刪除在庫中的文件或者目錄,然后commit。Copy拷貝文件,然后commitMove移動文件或目錄到另外目錄中,相當(dāng)于拷貝、刪除的組合。以上的命令是針對工作副本進(jìn)行的,所以要commit才有效.檢驗(yàn)修改(Examine your changes)Status顯示工作拷貝

25、目錄與文件的狀態(tài) 。用法:status PATH. svn status wc M wc/bar.c A wc/qax.cDiffdiff (di): 顯示兩個(gè)路徑中的差異 svn diff -r 19:25 Project.javaRevert恢復(fù)原始未改變的工作拷貝文件 (恢復(fù)大部份的本地修改) .合并修改(Merge others changes)Merge將兩個(gè)來源之間的差異應(yīng)用至工作拷貝路徑 Resolved移除工作拷貝的目錄或文件的 沖突 狀態(tài) .Other userful commandsCleanupListCatLogmkdir.常見的STATUSA 預(yù)定要添加的項(xiàng)目。D 預(yù)

26、定要?jiǎng)h除的項(xiàng)目。M 項(xiàng)目已經(jīng)修改了。U 文件更新了(從服務(wù)器收到修改)R 項(xiàng)目在工作拷貝中已經(jīng)被替換了。這意味著文件預(yù)定要?jiǎng)h除,然后有一個(gè)同樣名稱的文件要在同一個(gè)位置替換它。 C 項(xiàng)目的內(nèi)容(相對于屬性)與更新得到的數(shù)據(jù)沖突了。 ? 項(xiàng)目不在版本控制之下。! 項(xiàng)目已經(jīng)丟失(例如,你使用svn移動或者刪除了它)。這也說明了一個(gè)目錄不是完整的(一個(gè)檢出或更新中斷)。 .分支(BRANCH)獨(dú)立于主干(trunk)的“新項(xiàng)目”新項(xiàng)目開始于某一穩(wěn)定版本的revision,通過revision copy得到分支的基本概念正如它的名字,開發(fā)的一條線獨(dú)立于另一條線,如果回顧歷史,可以發(fā)現(xiàn)兩條線分享共同的歷史

27、例子:svn cp -m “create branch from r101.建立BRANCH的時(shí)機(jī)開發(fā)可能會對主分支產(chǎn)生影響從某一版本產(chǎn)生獨(dú)立的“特殊”產(chǎn)品解決BUG增加新功能.標(biāo)簽 (TAG)與BRANCH類似,給穩(wěn)定的版本做記號一個(gè)標(biāo)簽只是一個(gè)項(xiàng)目某一時(shí)間的“快照”,在Subversion里這個(gè)概念無處不在每一次提交的修訂版本都是一個(gè)精確的快照。從TAG中取出的代碼可以編譯成獨(dú)立的產(chǎn)品一般與Release產(chǎn)品一一對應(yīng)例子:svn cp tag_release_3_0 -m “create tag from r101.BRANCH與TAG的區(qū)別branch和tag,對于svn都是使用copy

28、實(shí)現(xiàn)的,所以他們在默認(rèn)的權(quán)限上和一般的目錄沒有區(qū)別。至于何時(shí)用tag,何時(shí)用branch,完全由人主觀的根據(jù)規(guī)范和需要來選擇,而不是強(qiáng)制的。一般情況下,tag,是用來做一個(gè)milestone的,不管是不是release,都是一個(gè)可用的版本。這里,應(yīng)該是只讀的。更多的是一個(gè)顯示用的,給人一個(gè)可讀(readable)的標(biāo)記。Branch 是用來做并行開發(fā)的,這里的并行是指和trunk進(jìn)行比較。例如:3.0開發(fā)完成,這個(gè)時(shí)候要做一個(gè)tag,tag_release_3_0,然后基于這個(gè)tag做release。trunk進(jìn)入3.1的開發(fā),但是3.0發(fā)現(xiàn)了bug,那么就需要基于tag_release_3_

29、0做一個(gè)branch,branch_bugfix_3_0,基于這個(gè)branch進(jìn)行bugfix,等到bugfix結(jié)束,做一個(gè)tag,tag_release_3_0_1,然后,根據(jù)需要決定branch_bugfix_3_0是否并入trunk。.合并 (MERGE)合并BRANCH的修改到TRUNK合并主分支的最新版本到工作副本BUG修正后將BUG去除的代碼合并到其他“特殊”BRANCH可以用來恢復(fù)舊版本merge: Apply the differences between two sources to a working copy path.usage: 1. merge sourceURL1

30、N sourceURL2M WCPATH2. merge sourceWCPATH1N sourceWCPATH2M WCPATH3. merge -c M | -r N:M SOURCEREV WCPATH。其實(shí),第一個(gè)URL(稱之為左邊),為起始狀態(tài);第二個(gè)URL(稱之為右邊),為最終狀態(tài),取最新的;最后一個(gè)是接收區(qū)別的工作拷貝(通常叫做合并的目標(biāo))。.合并 (MERGE)svn沒有恢復(fù)舊版本的直接功能,不過可以使用svn merge命令恢復(fù)。 例子:當(dāng)前HEAD為14,而我要恢復(fù)成10版本,怎么做?用svn merge:svn updatesvn merge -revision 14:1

31、0 PATHsvn commit -m restore to revision 10”Merge原理原理是比較指定版本的差異,然后把這些差異應(yīng)用到本地工作副本,而-r后的14:10,是指相對于版本14來說版本10的變化(注意,這個(gè)版本的次序很重要。),也就是相對版本14,版本10添加了哪些文件或目錄,以及哪些文件添加了哪些行刪除了哪些行。又因?yàn)楸镜匕姹臼亲钚碌?4,所以把這些差異應(yīng)用到本地版本時(shí)就等于把14改變成10,其效果等于還原到版本10。.沖突產(chǎn)生原因當(dāng)團(tuán)隊(duì)協(xié)同工作的時(shí)候,多人同時(shí)操作一個(gè)文件。當(dāng)有人操作完成后,將該文件提交到SVN上。這樣,其他人的本地文件與SVN上的文件版本不一致。當(dāng)

32、另一人操作完成后,提交該文件時(shí),就會出現(xiàn)沖突對于每一個(gè)沖突的文件,Subversion放置三個(gè)額外的未版本化文件到你的工作拷貝: 更新前的文件,最新更改的內(nèi)容。 更新操作以前的BASE版本文件,在上次更新之后未作更改的版本。 服務(wù)器的版本,對應(yīng)版本庫的HEAD版本。這里OLDREV是本地.svn目錄中的修訂版本號,NEWREV是版本庫中HEAD的版本號。.沖突的解決面對文件沖突,您可以選擇以下三種方式解決沖突:1. “手動”合并沖突文本(檢查和修改文件中的沖突標(biāo)志)。 -需要團(tuán)隊(duì)成員交流2. 如果希望取消自己的修改,可以拷貝Subversion為你生成的文件替換你的工作拷貝用某一個(gè)臨時(shí)文件覆蓋

33、你的工作文件。3. 運(yùn)行svn revert 來放棄所有的修改。解決了重提之后,運(yùn)行svn resolved,刪除了臨時(shí)文件,之后可以提交了。.如何避免沖突養(yǎng)成良好的習(xí)慣,在修改文件之前,先進(jìn)行一次update操作當(dāng)修改完成后,及時(shí)commit,不要在本地停留時(shí)間過長在多人協(xié)作時(shí),盡量修改自己撰寫的部分,不要修改其他部分多人協(xié)作時(shí),增加交流出現(xiàn)沖突很正常,可以通過前面的三個(gè)方法解決,不要相互覆蓋.四、客戶端工具TortoiseSVNTortoiseSVN介紹TortoiseSVN的使用.TortoiseSVN介紹Windows操作系統(tǒng)客戶端圖形化界面,集成了svn和svnadmin命令行工具的功能。該客戶端集成于資源管理器功能中,使用方便,易于掌握。網(wǎng)上可搜索下載,直接安裝TortoiseSVN-9898-win32-svn-1.6.12.msi ,方法同一般軟件安裝相同.TortoiseSVN使用介紹 一旦該客戶端安裝成功,在指定目錄單擊右鍵,彈出菜單中,增加了幾項(xiàng),如圖所示:.TortoiseSVN使用介紹如上圖所示,在資源管理器菜單中增加了,svn checkout 命令菜單和其他命令,諸如:瀏覽指定的資源庫、創(chuàng)建資源庫、從資源庫中導(dǎo)出資源、從指定目錄中導(dǎo)入到資源庫中。還有一些有關(guān)設(shè)置tortoisesvn工具的參數(shù)。如果指定的目錄已

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論