




已閱讀5頁(yè),還剩96頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7講,版本控制管理工具(2),主要內(nèi)容,1. Subversion簡(jiǎn)介 2、版本控制的基本知識(shí) 3、Subversion常用功能講解 4、客戶端工具tortoiseSVN 5、eclipse插件subeclipse的使用介紹 6、使用svn中常見(jiàn)問(wèn)題 7、 版本管理規(guī)則,一、Subversion簡(jiǎn)介,什么是Subversion Subversion的歷史 Subversion的特色 Subversion的體系結(jié)構(gòu) Subversion的安裝 Subversion的組件 Subversion快速入門(mén) Subversion客戶端工具,什么是Subversion?,版本控制是管理信息變更的一門(mén)藝術(shù)。 版本控制工具早已經(jīng)成為許多程序員的主要工具之一 。 版本控制軟件的用途并不僅限于軟件開(kāi)發(fā)的領(lǐng)域 ,只要人們使用計(jì)算機(jī)來(lái)管理經(jīng)常變更的信息,就需要使用版本控制工具 。 Subversion的一個(gè)概括性的介紹: Subversion 是什么?它用來(lái)做什么?以及如何得到它 。,什么是Subversion?,Subversion是一個(gè)自由的、開(kāi)放源碼的版本控制系統(tǒng) 它可以管理各個(gè)時(shí)刻的文件和目錄 。 Subversion將文件存放在repository庫(kù)中。這個(gè)倉(cāng)庫(kù)非常類似于一個(gè)普通的文件服務(wù)器 ,只是它還可以記錄文件和目錄曾經(jīng)做過(guò)的每一次變更 。 可把版本控制系統(tǒng)比作一種“時(shí)間機(jī)器” 。,什么是Subversion?,Subversion的倉(cāng)庫(kù)可以通過(guò)網(wǎng)絡(luò)來(lái)訪問(wèn),允許不同的用戶在不同的計(jì)算機(jī)上使用 。 不同的使用者可以進(jìn)行協(xié)同工作 。而且所有工作都是有記錄的,如果有錯(cuò)只要撤銷就可以。 Subversion只是版本控制系統(tǒng),不是軟件配置管理系統(tǒng)(SCM) 。 它是一個(gè)通道,可以管理任何計(jì)算機(jī)中的文件系統(tǒng)。,What is Subversion not?,svn is not a build system . svn is not a substitute for management. svn is not a substitute for developer Communication. svn does not have change control . svn is not an automated testing program.,Subversion的歷史,CVS有明顯的局限性和功能上的不足。 2000年開(kāi)始 ,CollabNet公司 就開(kāi)始著手開(kāi)發(fā)新的版本控制系統(tǒng)來(lái)代替CVS。 Karl Fogel 和Jim Blandy 是CVS開(kāi)發(fā)者,加入到開(kāi)發(fā)subversion當(dāng)中。 他們讓 Subversion 來(lái)使用 CVS 的特性,并且保留相同的開(kāi)發(fā)模型 ,但是避開(kāi) CVS 的那些明顯的缺陷 。 Subversion 于2001年8月進(jìn)入“自測(cè)”階段 。,Subversion的特色,目錄控制 CVS 只能跟蹤單個(gè)文件的歷史,而 Subversion 實(shí)現(xiàn)了一個(gè)“虛擬“的受控文件系統(tǒng),可以跟蹤整個(gè)目錄的變更。 真正的版本歷史 由于 CVS 只限于記錄文件的版本信息,像文件復(fù)制、重命名這樣的操作它就不支持 ,在 Subversion 中我們可以添加、刪除、復(fù)制和重命名文件和目錄 。,Subversion的特色,原子化提交 一個(gè)變更集要么完整地被提交到倉(cāng)庫(kù)中,要么不做任何改變 ,從而避免發(fā)生不完整地提交變更的情況 。 受控元數(shù)據(jù) 每一個(gè)文件和目錄都有一個(gè)與其對(duì)應(yīng)的屬性集 。 可選的網(wǎng)絡(luò)層 Subversion 倉(cāng)庫(kù)的存取是一個(gè)抽象概念,有利于其他人實(shí)現(xiàn)新的網(wǎng)絡(luò)訪問(wèn)機(jī)制 ,Subversion 可以作為一個(gè)外部模塊插入到 Apache HTTP 服務(wù)器中 。,一致的數(shù)據(jù)處理 Subversion 使用一種二進(jìn)制的比較算法來(lái)表示文件之間的區(qū)別 。 高效的分支和標(biāo)記 分支和標(biāo)記所帶來(lái)的開(kāi)銷與項(xiàng)目的規(guī)模并沒(méi)有直接的關(guān)系 ,Subversion 在創(chuàng)建分支和標(biāo)記時(shí)使用類似“連接”的方式來(lái)復(fù)制項(xiàng)目 。 擴(kuò)展能力 它是由一組設(shè)計(jì)良好的 APIs實(shí)現(xiàn)的,包含在 C 的共享庫(kù)中 ,這使得它很容易維護(hù)。也很容易被其他應(yīng)用程序或語(yǔ)言使用 。,Subversion的體系結(jié)構(gòu),Subversion的體系結(jié)構(gòu),典型的client/server模式結(jié)構(gòu) 在系統(tǒng)的一端是存放著所有受控制數(shù)據(jù)的 Subversion 倉(cāng)庫(kù)。 另一端是 Subversion 的客戶端程序,管理著受控?cái)?shù)據(jù)的一部分在本地的映射(稱為“工作副本”)。 在這兩端之間,是通過(guò)各種倉(cāng)庫(kù)存取層(Repository Access,RA)的多條通道。這些通道中,有些要使用計(jì)算機(jī)網(wǎng)絡(luò),再通過(guò)用來(lái)訪問(wèn) Subversion 倉(cāng)庫(kù)的服務(wù)器。而有些則完全繞過(guò)了網(wǎng)絡(luò),直接對(duì)倉(cāng)庫(kù)進(jìn)行操作 。,Subversion的安裝,Subversion 是建立在一個(gè)叫做 APR(the Apache Portable Runtime library)的可移植運(yùn)行庫(kù)之上的 。 Subversion 可以運(yùn)行在任何 Apache 服務(wù)器可以運(yùn)行的操作系統(tǒng)之上:Windows、Linux,各種類型的 BSD、Mac OS X,Netware 以及其他的系統(tǒng)。 獲得 Subversion 的最簡(jiǎn)單的方法就是下載適合于你的操作系統(tǒng)的二進(jìn)制軟件包 Subversion 的站點(diǎn)() Windows安裝是圖形化界面,linux安裝較復(fù)雜,另有討論。,Subversion的組件,svn 一個(gè)命令行的客戶端程序 svnversion 報(bào)告本地工作副本狀態(tài)(當(dāng)前檔案的修訂版本號(hào)表示)的程序 svnadmin 用來(lái)創(chuàng)建或者是修復(fù)倉(cāng)庫(kù)的工具 svndumpfilter 過(guò)濾資源庫(kù)程序,Subversion的組件,mod_dav_svn Apache 服務(wù)器的一個(gè)插件模塊,用來(lái)使其他人可以通過(guò)網(wǎng)絡(luò)訪問(wèn)這個(gè)倉(cāng)庫(kù) svnserve 一個(gè)定制的、獨(dú)立的 Subversion 服務(wù)程序??勺鳛橐粋€(gè)駐留進(jìn)程運(yùn)行或者是由 SSH 調(diào)用。是使倉(cāng)庫(kù)可以被別人通過(guò)網(wǎng)絡(luò)訪問(wèn)的另一種方法 常用的組件是svn和svnadmin,有圖形化客戶端來(lái)實(shí)現(xiàn)svn和svnadmin功能。,Subversion快速入門(mén),運(yùn)行下面的例子,必須確保svn和svnadmin這兩個(gè)工具正常運(yùn)行。 同時(shí)還必須保證你的 svn 工具是針對(duì) Berkeley DB 編譯的 。 可以運(yùn)行 svn -version 然后檢查 ra_local 模塊是否可用來(lái)確認(rèn) ,如果沒(méi)有這個(gè)模塊,我們的客戶端程序?qū)o(wú)法訪問(wèn) file:/URLs,Subversion快速入門(mén),Subversion快速入門(mén),$ svnadmin create /path/to/repos ls /path/to/repos conf/ dav/ db/ format hooks/ locks/ README.txt 這個(gè)命令創(chuàng)建了一個(gè)包含 Subversion 倉(cāng)庫(kù)的目錄 /path/to/repos 。另外,這個(gè)目錄必須創(chuàng)建在本地磁盤(pán),而不能是在網(wǎng)絡(luò)共享磁盤(pán)上 下一步,準(zhǔn)備一個(gè)類似下面例子中的用來(lái)導(dǎo)入的文件、目錄樹(shù)。在樹(shù)結(jié)構(gòu)中,應(yīng)該包含三個(gè)頂層目錄:branches、tags 和 trunk,Subversion快速入門(mén),/tmp/project/branches/ /tmp/project/tags/ /tmp/project/trunk/ foo.c bar.c Makefile .,Subversion快速入門(mén),一旦你準(zhǔn)備好了目錄樹(shù),就可以使用 svn import 命令來(lái)導(dǎo)入數(shù)據(jù)到倉(cāng)庫(kù)中了 svn import /tmp/project file:/path/to/repos -m “initial import“ Adding /tmp/project/branches Adding /tmp/project/tags Adding /tmp/project/trunk Adding /tmp/project/trunk/foo.c Adding /tmp/project/trunk/bar.c Adding /tmp/project/trunk/Makefile . Committed revision 1.,Subversion快速入門(mén),現(xiàn)在,倉(cāng)庫(kù)中就有了整個(gè)目錄樹(shù)中的數(shù)據(jù) 為了開(kāi)始操作倉(cāng)庫(kù)中的數(shù)據(jù),我們需要先創(chuàng)建一個(gè)數(shù)據(jù)的“工作副本(working copy)”出來(lái) 。 這類似于一種私有的工作區(qū) ,向 Subversion “check out”(借出)一份倉(cāng)庫(kù)中 trunk 目錄的工作副本 : $ svn checkout file:/path/to/repos/trunk project 在一個(gè)新的 project 目錄下就有了倉(cāng)庫(kù)中一部分?jǐn)?shù)據(jù)的一個(gè)私人副本 ,可以在本地工作副本上編輯某個(gè)文件,然后再將那些修改提交到倉(cāng)庫(kù)中 。,Subversion客戶端工具,命令行工具 通過(guò)命令行方式,主要命令包括: svn:基本svn命令 svnadmin:存儲(chǔ)庫(kù)管理 svnlook:存儲(chǔ)庫(kù)查看 TortoiseSVN 與windows資源管理器集成 subclipse 與eclipse集成,二、版本控制的基本知識(shí),2.1 倉(cāng)庫(kù)(The Repository) 2.2 版本控制模型 2.3 實(shí)際工作中的subversion 2.4 subversion/cvs/vss比較,2.1 倉(cāng)庫(kù)(The Repository),Subversion 是一個(gè)集中式的系統(tǒng)。它的核心是一個(gè)用來(lái)存放數(shù)據(jù)的中心倉(cāng)庫(kù)。中心倉(cāng)庫(kù)使用典型的文件和目錄層次結(jié)構(gòu)樹(shù)狀結(jié)構(gòu)來(lái)存儲(chǔ)信息。 許許多多的客戶端可以連接到中心倉(cāng)庫(kù),然后讀取或者寫(xiě)入文件 。 客戶端通過(guò)寫(xiě)文件來(lái)使其他人共享,也可以讀取其它客戶端所寫(xiě)入的文件。 典型的客戶端/服務(wù)器系統(tǒng)模型 ,如圖所示:,2.1 倉(cāng)庫(kù)(The Repository),倉(cāng)庫(kù)就是一種文件服務(wù)器,只是不是通常的那種 。 Subversion 倉(cāng)庫(kù)可以記錄寫(xiě)入倉(cāng)庫(kù)的每一次更改 。 這些更改包括對(duì)每一個(gè)文件的每一次修改,甚至是對(duì)目錄本身的修改,例如添加文件、刪除文件和對(duì)文件和目錄的重新編排。這些特性使得 Subversion 倉(cāng)庫(kù)與一般的文件服務(wù)器相比較為特殊。 客戶端同樣可以讀取文件和目錄以前某個(gè)時(shí)刻的狀態(tài) 。 版本控制系統(tǒng)的核心:記錄和跟蹤數(shù)據(jù)的修改歷史 。,2.1 倉(cāng)庫(kù)(The Repository),2.2 版本控制模型,版本控制系統(tǒng)的核心任務(wù)是使得數(shù)據(jù)可以協(xié)作處理和共享。但是不同的系統(tǒng)使用不同的策略來(lái)達(dá)到這個(gè)目標(biāo) 。 文件共享的問(wèn)題 。 “鎖定修改解鎖” 方案 “復(fù)制修改合并“方案,文件共享的問(wèn)題,所有的版本控制系統(tǒng)都需要解決這樣一個(gè)基礎(chǔ)問(wèn)題:怎樣讓系統(tǒng)允許用戶共享信息,而不會(huì)讓他們因意外而互相干擾? 版本庫(kù)里意外覆蓋別人的更改非常的容易。 我們有兩個(gè)共同工作者,Harry和Sally,他們想同時(shí)編輯版本庫(kù)里的同一個(gè)文件。如果首先Harry保存他的修改,過(guò)了一會(huì),Sally湊巧用自己的版本覆蓋了此文件。而Harry所有的修改不會(huì)出現(xiàn)在Sally的文件中,所以Harry的工作還是丟失了。,文件共享:鎖定修改解鎖方案(1),文件共享:鎖定修改解鎖方案(2),鎖定可能導(dǎo)致管理問(wèn)題 如果Harry鎖住文件后忘了此事,則Sally僵住。 鎖定可能導(dǎo)致不必要的線性開(kāi)發(fā) Harry編輯一個(gè)文件的開(kāi)始,而Sally編輯此文件的結(jié)尾。本來(lái)不沖突,修改后合并即可。 鎖定可能導(dǎo)致錯(cuò)誤的安全狀態(tài) 如果Harry鎖住A,Sally鎖住B,而兩文件相互依賴,則兩文件不能很好地工作。,文件共享:拷貝修改合并方案(1),Subversion、CVS以及其他一些版本控制系統(tǒng)使用“拷貝修改合并”模型來(lái)代替鎖定 。 每一個(gè)用戶的客戶端軟件從中央倉(cāng)庫(kù)創(chuàng)建出一份個(gè)人的工作副本倉(cāng)庫(kù)中文件和目錄的本地映射 。 用戶就可以并行工作,修改手中的私有副本 。 這些私有副本合并成為一個(gè)全新的版本 。 版本控制系統(tǒng)常常需要合并,但是最終,操作者本身必須負(fù)責(zé)讓合并工作正確進(jìn)行 。,文件共享:拷貝修改合并方案(2),文件共享問(wèn)題的解決,合并模型假定文件是可以根據(jù)上下文合并的文本文件 例如程序源代碼、源代碼以及用純文本,HTML,Text等格式保存的文檔。 對(duì)于二進(jìn)制文件,可以采用鎖定模型 如用Microsoft Word格式,PDF等格式保存的文檔及圖片,聲音,可執(zhí)行文件,庫(kù)等,有必要采用鎖定讓用戶輪流修改文件。 svn兩種模型都支持,沖突(conflict),如果 Sally 的修改會(huì)覆蓋掉 Harry 的工作怎么辦?這種情況叫做“沖突(conflict) 當(dāng) Harry 要求他的客戶端軟件合并倉(cāng)庫(kù)中的最新修改到工作副本時(shí),文件 A 被標(biāo)記為沖突狀態(tài)。 遇到這種情況,只有人本身才有能力理解和做出合理的選擇 。注意,軟件并不能自動(dòng)解決沖突 。 用于解決沖突的時(shí)間遠(yuǎn)遠(yuǎn)少于鎖定系統(tǒng)所帶來(lái)的時(shí)間浪費(fèi)。,解決沖突的關(guān)鍵是用戶交流,最終,我們將所有的問(wèn)題歸結(jié)為一個(gè)關(guān)鍵因素:用戶交流。如果用戶很少交流,不論是語(yǔ)法的還是語(yǔ)義的沖突都會(huì)增加。沒(méi)有哪個(gè)系統(tǒng)可以讓用戶完美地交流,也沒(méi)有哪個(gè)系統(tǒng)可以自動(dòng)檢查出語(yǔ)義上的沖突。,文本文件產(chǎn)生沖突,進(jìn)行合并Merge,編輯沖突Edit Reflict,消除沖突,2.3 實(shí)際中的 Subversion,工作副本W(wǎng)orking Copies 資源庫(kù)存儲(chǔ)的不同方式URLs 修訂本 工作副本如何跟蹤倉(cāng)庫(kù),工作副本W(wǎng)orking Copies,一個(gè) Subversion 的工作副本其實(shí)就是本地系統(tǒng)中的一個(gè)普通的文件目錄樹(shù) 。 可以使用任何方式來(lái)編輯這些文件。如果是源代碼文件的話,你也可以像通常情況那樣去編譯它們。 工作副本是你的私人工作區(qū) 。 如果你不明確的要求,Subversion 絕不會(huì)合并其他人的修改,也不會(huì)讓其他人看到你做的修改 。,工作副本W(wǎng)orking Copies,在你已經(jīng)修改完工作副本中的文件,并且確信修改正確后,就可以將這些修改公開(kāi)給同一個(gè)項(xiàng)目中的其他工作人員。Subversion 提供了將文件寫(xiě)入倉(cāng)庫(kù)的命令 。 工作副本中也包含一些額外的文件。它們是由 Subversion 創(chuàng)建和維護(hù)的,用來(lái)輔助完成這些命令。 最典型的情況是,每一個(gè)目錄都包含一個(gè)叫做 .svn 的子目錄 。該目錄也被稱為“工作副本管理目錄”。 一個(gè) Subversion 的倉(cāng)庫(kù)會(huì)包含幾個(gè)項(xiàng)目,而每一個(gè)項(xiàng)目都是倉(cāng)庫(kù)的目錄的一個(gè)子目錄。這樣,用戶的工作副本也就對(duì)應(yīng)于倉(cāng)庫(kù)中一個(gè)特定的子目錄。,工作副本W(wǎng)orking Copies,資源庫(kù)存儲(chǔ)的不同方式URLs,修訂本,一個(gè) svn commit 操作可以將任意數(shù)量的文件和目錄的修改發(fā)布作為一個(gè)單獨(dú)的原子事務(wù)來(lái)處理 。 在倉(cāng)庫(kù)中,每一次提交都被作為一個(gè)原子事務(wù)來(lái)對(duì)待 。 每當(dāng)倉(cāng)庫(kù)接受一次提交,倉(cāng)庫(kù)中的文件系統(tǒng)目錄都會(huì)創(chuàng)建一種新的狀態(tài),叫做一個(gè)修訂本。 每一個(gè)修訂本都被賦予一個(gè)唯一的自然數(shù),并且每一個(gè)修訂本的數(shù)字都比前一個(gè)要大。剛剛建立的倉(cāng)庫(kù)的初始的版本是 0 ,只包含一個(gè)空的根目錄。 Subversion 的修訂版編號(hào)是針對(duì)整個(gè)目錄樹(shù)的,而不是某一個(gè)獨(dú)立的文件 。,修訂本,設(shè)想一個(gè)修訂版編號(hào)的數(shù)列,從 0 開(kāi)始,從左延伸到右。每一個(gè)修訂版編號(hào)都對(duì)應(yīng)一個(gè)畫(huà)下面的目錄樹(shù),而每一個(gè)目錄樹(shù)就是在每一次提交之后的倉(cāng)庫(kù)的“快照“。,如圖所示:,Subversion推薦目錄結(jié)構(gòu),倉(cāng)庫(kù) 項(xiàng)目名 trunk:主版本 branches:分支版本(獨(dú)立版本) tags:標(biāo)記版本,比如發(fā)行版 v 1.0/ v 2.0等等,SVN倉(cāng)庫(kù)常用目錄組織結(jié)構(gòu),工作副本如何跟蹤倉(cāng)庫(kù),2.4 subversion/cvs/vss比較,3.1 Svn常用命令介紹 3.2 Subversion高級(jí)操作,三、subversion常用功能講解,3.1 Svn常用命令介紹,Help Import Checkout Update your working copy Svn update Make changes add delete copy move,3.1 Svn常用命令介紹(2),Examine your changes status diff revert Merge others changes Merge Resolved Commit your changes commit,help,C:svn help 用法:svn options args 請(qǐng)使用 “svn help ” 顯示子命令的輔助說(shuō)明。 大多數(shù)的子命令可接受文件或目錄參數(shù),對(duì)目錄進(jìn)行遞回存取。 如無(wú)指定參數(shù)給命令,默認(rèn)將會(huì)自當(dāng)前的目錄 (包含) 進(jìn)行遞歸存取,import,import: 提交未納入版本控制的文件或目錄樹(shù)至檔案庫(kù) 用法:import PATH URL 遞歸地提交 PATH 的拷貝至地址(URL)。如果省略 PATH,默認(rèn)為 .。父目錄會(huì)依需要于檔案庫(kù)內(nèi)建立。 舉例:D:svn import -m “import directory“ -username lsr -password lsr ./monitor https:/localhost/svn/reposs,checkout,checkout (co): 從檔案庫(kù)簽出工作拷貝 用法:checkout 地址. 路徑 例如:D:ggsvn co https:/localhost/svn/reposs,update,將檔案庫(kù)的改變反應(yīng)至工作拷貝 用法:update PATH. 例如:D:privatepublish個(gè)人信息svn update 于修訂版 48。,Make changes,Add: 增加文件或者目錄到資源庫(kù)中,然后commit。條件是該文件或者目錄已經(jīng)在相應(yīng)的目錄上。 Delete 刪除在庫(kù)中的文件或者目錄,然后commit。 Copy 拷貝文件,然后commit Move 移動(dòng)文件或目錄到另外目錄中,相當(dāng)于拷貝、刪除的組合。 以上的命令是針對(duì)工作副本進(jìn)行的,所以要commit才有效,Examine your changes,Status 顯示工作拷貝目錄與文件的狀態(tài) 。 用法:status PATH. svn status wc M wc/bar.c A + wc/qax.c Diff diff (di): 顯示兩個(gè)路徑中的差異 D:reposwebtesttrunksvn diff -r 19:25 Project.java Revert 恢復(fù)原始未改變的工作拷貝文件 (恢復(fù)大部份的本地修改),Merge others changes,Merge 將兩個(gè)來(lái)源之間的差異應(yīng)用至工作拷貝路徑 Resolved 移除工作拷貝的目錄或文件的 沖突 狀態(tài),Commit your changes,Commit commit (ci): 把改變從工作拷貝發(fā)送到檔案庫(kù)。 用法:commit 路徑. 日志信息必須提供,但可以是空的 D:fffsvn commit -m “l(fā)ishure“ 正在發(fā)送 hh.txt 傳輸文件數(shù)據(jù). 提交后的修訂版為 14。,Other userful commands,Cleanup List Cat Log mkdir,3.2 Subversion高級(jí)操作,SVN的高級(jí)操作主要包括分支(Branch/Tag)以及合并(Merge)操作 分支操作 切換URL 合并操作,為什么需要分支?,你在開(kāi)發(fā)一個(gè)軟件,基于Windows平臺(tái)。有一天,老板找到你,希望你把這個(gè)軟件移植到Linux平臺(tái)下,同時(shí)又不放棄原有版本,怎么管理代碼? 你的產(chǎn)品即將發(fā)布,需要進(jìn)行一段時(shí)間的Alpha,Beta測(cè)試直至正式版Release。同時(shí),市場(chǎng)的競(jìng)爭(zhēng)迫使你必須馬不停蹄的開(kāi)發(fā)下一個(gè)新版本,增加許多新的特性。兩個(gè)工作必須同時(shí)進(jìn)行,怎么管理代碼?,什么是分支?,分支的概念,從圖中可以看到,分支是開(kāi)發(fā)的一條“支線”。它獨(dú)立于其他開(kāi)發(fā)的線路,并且和其他線路并行開(kāi)發(fā) 但是,所有的分支都有共同的歷史,有著原先共同的主線,創(chuàng)建分支,創(chuàng)建分支使用copy命令 語(yǔ)法:copy 源目錄 目標(biāo)目錄 方法 方法1:先把目錄checkout到本地,在本地執(zhí)行copy命令后提交至版本庫(kù) 例:svn co svn:/localhost/ svn copy trunk/ branches/mybranch svn commit m “My branch created” $ svn copy /repos/calc/trunk /repos/calc/branches/my-calc-branch -m “Creating a private branch of /calc/trunk.“ Committed revision 341. 方法2:直接用copy命令對(duì)版本庫(kù)中兩個(gè)URL進(jìn)行操作 例:svn copy svn:/localhost/trunk svn:/localhost/branches/mybranch m “My branch”,創(chuàng)建分支前后版本庫(kù)的變化,之前 之后,在分支上工作,要想在分支上工作,需要一個(gè)對(duì)應(yīng)于分支的工作拷貝。有兩種方法可以獲得這種工作拷貝 方法1:直接從分支的URL上Checkout出工作拷貝(適用于沒(méi)有工作拷貝的情況) 方法2:使用switch命令切換工作拷貝對(duì)應(yīng)的URL(在有工作拷貝的基礎(chǔ)上),Switch操作,Switch操作可以使工作拷貝在不同的分支之間或者在 位于不同服務(wù)器上 相同的 版本庫(kù) 的 分支間切換。它的作用是改變工作拷貝對(duì)應(yīng)的URL Switch & Update:Update命令是Switch命令的一個(gè)子集 語(yǔ)法:switch -relocate 目標(biāo)URL 慎用-relocate選項(xiàng),分支的合并(1),分支的合并是指把修改從分支拷貝到主干或者把主干的修改拷貝到分支的過(guò)程。 傳統(tǒng)方法:diff + patch 例子:svn diff r 2000:2007 svn:/localhost/trunk patchfile patch p0 patchfile 這個(gè)例子取出主干2000版到2007版的修改,然后把它應(yīng)用到工作拷貝(工作拷貝這個(gè)時(shí)候一般對(duì)應(yīng)于某個(gè)分支) 只適用于文件內(nèi)容,對(duì)于目錄樹(shù)結(jié)構(gòu)無(wú)能為力,分支的合并(2)Merge操作,Merge操作和傳統(tǒng)方法十分類似,但是它能夠處理目錄樹(shù)的修改,而不限于單個(gè)文件內(nèi)容 語(yǔ)法:merge 初始版本樹(shù) 最終版本樹(shù) 目標(biāo) 常用語(yǔ)法:merge 初始版本:最終版本 版本庫(kù)URL 目標(biāo) 作用:取出初始版本到最終版本的修改,然后把它應(yīng)用到當(dāng)前工作拷貝 例子 merge svn:/localhost/trunk2000 svn:/localhost/trunk2007 my_wc merge r 2000:2007 svn:/localhost/trunk my_wc,四、客戶端工具tortoiseSVN,tortoiseSVN介紹 tortoiseSVN的使用,tortoiseSVN介紹,Windows操作系統(tǒng)客戶機(jī) 圖形化界面,集成了svn和svnadmin命令行工具的功能。 該客戶機(jī)集成于資源管理器功能中,使用方便,易于掌握。 直接安裝TortoiseSVN-1.1.1-UNICODE_svn-1.1.1.msi,方法同一般軟件安裝相同,tortoiseSVN 的使用,一旦該客戶機(jī)安裝成功,在指定目錄單擊右鍵,彈出菜單中,增加了幾項(xiàng),如圖所示:,tortoiseSVN 的使用,如上圖所示,在資源管理器菜單中增加了,svn checkout 命令菜單和其他命令,諸如:瀏覽指定的資源庫(kù)、創(chuàng)建資源庫(kù)、從資源庫(kù)中導(dǎo)出資源、從指定目錄中導(dǎo)入到資源庫(kù)中。 還有一些有關(guān)設(shè)置tortoisesvn工具的參數(shù)。 如果指定的目錄已經(jīng)被納入到特定的資源庫(kù)中,那彈出的菜單參數(shù)更多,如目錄private已經(jīng)被subversion管理了,它就是一個(gè)工作副本,如下圖所示:,tortoiseSVN 的使用,tortoiseSVN介紹,如上圖所示,彈出菜單中含有更多的svn命令 Update Commit 含有svn的所有命令,但是操作比svn命令行方式方便多了。 通過(guò)該客戶機(jī)可以很快掌握svn命令,同時(shí)很好的對(duì)自己所屬的工作拷貝進(jìn)行管理,subclipse-source_1.4.2 適合myeclipse5.5使用 site-1.6.17 適合eclipse3.2+使用 注意插件的版本要與eclipse版本的一致性。,五、eclipse插件subeclipse的使用介紹,subclipse-source_1.4.2,該插件適合myeclipse5.5版本,下載網(wǎng)站是: , 下載subclipse-source_1.4.2.zip,subclipse-source_1.4.2安裝步驟,啟動(dòng)myeclipse5.5 ,選擇Help - Software Updates - Find and Install,中文界面的是:幫助-軟件更新-查找并安裝。 選擇“Search for new features to install” and click Next,中文界面的是:搜索要安裝的新功能部件,點(diǎn)擊“下一步” 。 點(diǎn)擊 “New Local Site”,中文界面的是:新建本地站點(diǎn) 。 查找下載插件所在的路徑,并選擇/update and click OK,subclipse-source_1.4.2安裝步驟,你將能看見(jiàn)該你的站點(diǎn),選擇它并點(diǎn)擊下一步,如圖所示 :,按照向?qū)В⒅匦聠?dòng)eclipse,即完成了安裝,Subeclipse的使用,安裝完成后。重新啟動(dòng)eclipse后,打開(kāi)窗口-打開(kāi)透視圖,其他,如圖所示,Subeclipse的使用,如上圖所示,透視圖里多了SVNRepository透視圖,選中該透視圖,點(diǎn)擊“確定”按鈕,進(jìn)入svn透視圖,該透視圖由以下視圖組成,如圖所示 :,Subeclipse的使用,視圖包括:SVN Repository、SVN Resource History、SVN Properties、SVN Annotate、pendling SVN Operations。其中SVN Repository視圖是最主要的,也是通過(guò)該視圖進(jìn)行新建連接repository庫(kù)和操作repository庫(kù)、等操作。其余視圖都是圍繞該視圖展開(kāi)。,Subeclipse的使用,新建repository連接,在SVN Repository視圖中單擊右鍵,按出菜單,然后新建repository連接,如圖所示 :,Subeclipse的使用,點(diǎn)擊增加repository后,添加一個(gè)新的 SVN Repository庫(kù)到SVN Repositories 視圖,這里需要說(shuō)明的,repository庫(kù)必須首先建立,用svnadmin工具建repository庫(kù)。如圖所示 :,Su
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司月末會(huì)活動(dòng)策劃方案
- 公司茶會(huì)活動(dòng)方案
- 公司春游游戲活動(dòng)方案
- 公司播放電影策劃方案
- 公司組織境外團(tuán)建活動(dòng)方案
- 公司組織午間運(yùn)動(dòng)活動(dòng)方案
- 公司競(jìng)走活動(dòng)方案
- 公司聯(lián)歡晚會(huì)策劃方案
- 2025年游戲設(shè)計(jì)師職業(yè)資格考試試卷及答案
- 2025年智能制造工程師考試試卷及答案
- 好老師是民族的希望
- 項(xiàng)目建設(shè)審批流程課件
- 2024高海拔地區(qū)模塊化增壓式建筑技術(shù)標(biāo)準(zhǔn)
- 零碳建筑評(píng)價(jià)標(biāo)準(zhǔn)
- 烹飪面點(diǎn)職業(yè)生涯規(guī)劃書(shū)
- 低碳新型材料項(xiàng)目建議書(shū)
- 設(shè)計(jì)授權(quán)委托書(shū)
- 長(zhǎng)安逸動(dòng)說(shuō)明書(shū)
- Book-1-Unit-3-going-positive教學(xué)設(shè)計(jì)文檔
- 常用護(hù)理評(píng)估工具-產(chǎn)科VTE風(fēng)險(xiǎn)評(píng)估
- 新版中國(guó)成人急性髓系白血?。ǚ羌毙栽缬琢<?xì)胞白血病)診療指南
評(píng)論
0/150
提交評(píng)論