一、SCM和Subversion簡(jiǎn)介
軟件配置管理(SCM)是管理源碼并保持其安全的良好藝術(shù),它能實(shí)現(xiàn)源碼與其他團(tuán)隊(duì)成員之間保持共享,并且能夠?qū)χ右员Wo(hù)。良好地利用SCM,你能夠容易地跟蹤軟件的發(fā)行和新的開(kāi)發(fā)分支;這樣以來(lái),可以更為容易地標(biāo)識(shí)和修正發(fā)行產(chǎn)品中的錯(cuò)誤。
其實(shí),有大量的SCM工具可用,既有開(kāi)源的和也有商業(yè)化的,例如StarTeam,Perforce,BitKeeper和ClearCase。在開(kāi)源世界里,事實(shí)上的SCM標(biāo)準(zhǔn)是并發(fā)版本管理系統(tǒng)(CVS),它被廣泛應(yīng)用于世界范圍內(nèi)的成百上千的開(kāi)源和商業(yè)工程。然而,CVS也存在下列許多固有的缺陷,這使得它無(wú)法非常完美地適合于現(xiàn)代工程開(kāi)發(fā):
· 實(shí)質(zhì)上針對(duì)文本文件的設(shè)計(jì)使得CVS處理二進(jìn)制文件能力比較差。在每一次提交時(shí),二進(jìn)制文件被以整體形式傳輸和存儲(chǔ),這將帶來(lái)帶寬和磁盤(pán)空間的浪費(fèi)。
· 在CVS中,你不能移動(dòng)文件和目錄。你唯一的選擇基本上就是刪除并且重新添加它們,從而失去了整個(gè)過(guò)程中的所有的文件歷史信息。
· CVS中沒(méi)有實(shí)現(xiàn)原子提交的概念。比方說(shuō),你要把10個(gè)文件提交到服務(wù)器,而該提交操作往往在整個(gè)過(guò)程的中途停了下來(lái)。(這很可能會(huì)發(fā)生,如果某人同時(shí)提交一個(gè)文件,或甚至如果你的網(wǎng)絡(luò)失敗或你的PC重新啟動(dòng)的話。)在這種情況下,服務(wù)器將僅記錄下你的修正的一半信息,這可能會(huì)使代碼基部分處于一種潛在地不穩(wěn)定的狀態(tài)。
Subversion是一種比較新的開(kāi)源SCM工具,其設(shè)計(jì)目的是力圖從根本上克服原CVS所具有的限制。它是一種良好設(shè)計(jì)的工具,具有適合于現(xiàn)代開(kāi)發(fā)的許多新特征:
· 提交是原子化的。提交的文件都能夠被正確加入到一個(gè)新的修訂當(dāng)中,否則倉(cāng)庫(kù)不會(huì)被更新;并且每一個(gè)新的修訂僅由一次提交中的變化部分組成。
· Subversion對(duì)文本和二進(jìn)制文件使用一種巧妙的二進(jìn)制技術(shù),這既優(yōu)化了網(wǎng)絡(luò)流量也優(yōu)化了倉(cāng)庫(kù)磁盤(pán)空間。
· 在Subversion中,每一次修訂都代表了一個(gè)特定時(shí)間內(nèi)完整的目錄樹(shù)拷貝。文件和目錄可以不加限制地進(jìn)行移動(dòng)。
· Subversion僅存儲(chǔ)兩個(gè)版本之間的修改內(nèi)容,這不僅節(jié)約了磁盤(pán)空間,并且意味著標(biāo)識(shí)一個(gè)新版本或創(chuàng)建一種新的子內(nèi)容幾乎可以立即實(shí)現(xiàn)。
· 你可以以多種途徑來(lái)存取一個(gè)Subversion倉(cāng)庫(kù),具體則依賴于你的需要:使用HTTP或HTTPS(與WebDAV一起使用),使用快速的專(zhuān)利性svn:協(xié)議,或直接經(jīng)由本地文件,等等。
二、Subclipse插件與Eclipse的集成
一種良好的SCM應(yīng)該與你的工作環(huán)境緊密地集成到一起。沒(méi)有誰(shuí)真正喜歡轉(zhuǎn)到命令行以把文件添加到倉(cāng)庫(kù)。Eclipse很早就實(shí)現(xiàn)了CVS集成,但是直到最近Subversion用戶仍沒(méi)有被引起重視?,F(xiàn)在,新的Subclipse插件提供了在Eclipse中的一種平滑的Subversion集成。
(一) 安裝Subclipse插件
下面,你以通常的方法從更新站點(diǎn)下安裝Subclipse:
1. 打開(kāi)"Find and install"窗口("Help>Software Updates>Find and Install")。
2. 選擇"Search for new features to install"選項(xiàng)并點(diǎn)擊Next。
3. 點(diǎn)擊"New Remote Site"并且創(chuàng)建一遠(yuǎn)程站點(diǎn),使用名字Subclipse和URL http://subclipse.tigris.org/update_1.0.x(參考圖1)。
4. 在結(jié)果安裝窗口中,把"Subeclipse in the Features"選擇到安裝列表中,并且通過(guò)向?qū)?lái)開(kāi)始安裝插件。
5. 完成這些之后,重新啟動(dòng)Eclipse。現(xiàn)在,你可以繼續(xù)往下進(jìn)行!
(二) 建立Repository定義
現(xiàn)在,既然你已經(jīng)安裝完插件;那么,接下來(lái),你需要告訴它你的工程倉(cāng)庫(kù)位于何處。你是在SVN Repository視圖中實(shí)現(xiàn)的。打開(kāi)這個(gè)視圖("Windows>Show View>Other>SVN Repository")并且在上下文菜單中選擇"New>Repository Location"以顯示一個(gè)如圖2所示的對(duì)話框。輸入適當(dāng)?shù)腢RL并且點(diǎn)擊"Finish"。
(三) 檢出(Check Out)一個(gè)工程
一旦建立一個(gè)倉(cāng)庫(kù),你就可以在SVN Repository視圖中瀏覽所有的內(nèi)容(見(jiàn)圖3)。我們后面將會(huì)看到,這個(gè)視圖是一種與Subversion進(jìn)行交互的非常方便的方式。
圖3.SVN Repository視圖。
現(xiàn)在,讓我們把一個(gè)工程檢出到你的Eclipse工作區(qū)中。這只需選擇你需要的Subversion倉(cāng)庫(kù),打開(kāi)上下文菜單,并且選擇"Checkout"即可。這將打開(kāi)一個(gè)具有兩個(gè)選項(xiàng)的向?qū)В?
· Check out as a Project configured using the New Project Wizard-這個(gè)選項(xiàng)打開(kāi)新工程向?qū)?,這可以讓你使用內(nèi)建的Eclipse工程類(lèi)型配置工程。這個(gè)選項(xiàng)通常是最好用的,因?yàn)樗屇闶褂孟嗤墓こ棠0搴团渲闷聊?,而?dāng)你創(chuàng)建一個(gè)常規(guī)工程時(shí)你經(jīng)常使用它們。
· Check out as a Project in the Workspace-這個(gè)選項(xiàng)簡(jiǎn)單地在你的包含檢出源碼的工作區(qū)中創(chuàng)建一個(gè)Eclipse工程。
在以上兩種情況下,你仍然需要更新工程的構(gòu)建路徑,因?yàn)樵跈z出該工程源碼之前,Eclipse不能確定這些 Java 源碼所在的位置。
(四) 把一個(gè)新工程導(dǎo)入到倉(cāng)庫(kù)中
如果你只是啟動(dòng)了一個(gè)新的工程,那么你需要把它導(dǎo)入到Subversion倉(cāng)庫(kù)。Subclipse提供了一種方便的方式來(lái)直接從你的IDE內(nèi)部實(shí)現(xiàn)這一點(diǎn)。為此,只需要從Package Explorer視圖下選擇你的工程,并且在上下文菜單中選擇"Team>Share Project"。你可以使用現(xiàn)有倉(cāng)庫(kù)之一或創(chuàng)建一新的倉(cāng)庫(kù)定義。在你指定倉(cāng)庫(kù)和工程名之后,你能指定你想放到倉(cāng)庫(kù)中的文件和目錄并且提供一個(gè)初始注釋(見(jiàn)圖4)。這種方法特別有用,因?yàn)樗屇阌羞x擇地導(dǎo)入僅由Subversion管理的文件,即使該工程還包含其它文件(例如生成的類(lèi),臨時(shí)文件或其它不是必需的內(nèi)容等)。
現(xiàn)在,既然你的支持Subversion的工程已經(jīng)啟動(dòng)并且運(yùn)行起來(lái),那么大多數(shù)必要的Subversion命令就可經(jīng)由"Team"上下文菜單存取(參考圖5)。你可以在Package Explorer中看到你的本地文件的狀態(tài)(參考圖6),其中,任何修改了的文件都被標(biāo)記上一個(gè)星號(hào)。存儲(chǔ)在倉(cāng)庫(kù)中的文件都顯示一個(gè)小黃桶圖標(biāo)(代表了一個(gè)數(shù)據(jù)庫(kù));還沒(méi)有被添加到倉(cāng)庫(kù)中的文件以一個(gè)問(wèn)號(hào)顯示。
(一) 與Repository保持同步
從倉(cāng)庫(kù)中更新你的文件并且把你的變化提交到倉(cāng)庫(kù)是相當(dāng)直接的過(guò)程,這可以使用"Team>Update and Team>Commit"菜單選項(xiàng)來(lái)實(shí)現(xiàn)。在提交你的變化之前,你可能想看一下自從你的上次更新以來(lái)是否服務(wù)器上有任何文件被修改。為此,你可以使用"Team >Synchronize with Repository"。這個(gè)命令讓你看到有哪些內(nèi)容已經(jīng)被局部地修改,有哪些內(nèi)容在服務(wù)器上修改,以及這兩種修改之間的任何沖突(參考圖7)。你還可以以可視化方式看到?jīng)_突的版本,并且在提交你的變化之前糾正任何比較突出的沖突。
(二) 使用屬性
屬性是Subversion具有創(chuàng)新性的特征之一。在Subversion中,你可以把元數(shù)據(jù)("properties")關(guān)聯(lián)到任何文件或目錄。你可以定義任何你喜歡的屬性,但是Subversion也提供了一些有用的內(nèi)置屬性,例如下面圖8中所提供的這些屬性:
· svn:executable屬性,允許你在支持這種能力的操作系統(tǒng)上設(shè)置一個(gè)文件的可執(zhí)行標(biāo)志。
· svn:need-lock屬性,可以用來(lái)在文件(例如,對(duì)二進(jìn)制文件非常有用)上強(qiáng)加排斥鎖。一個(gè)定義了svn:need-lock屬性的文件一次只能被一個(gè)人修改。當(dāng)該文件被檢出時(shí),它是只讀的。如果你想修改該文件,你需要首先使用"Team>Lock"菜單選項(xiàng)。之后,使用"Team>Unlock"釋放該文件,或僅提交你的變化。這一行為將釋放該鎖并且讓其它的用戶也得到該文件上的一把鎖。
(三) Tag和Branch
在Subversion中,很容易創(chuàng)建新的tag和branch。你可以使用tag來(lái)標(biāo)識(shí)一個(gè)特定的版本(使用一種可讀的名字,例如"Release 1.0")。;而一個(gè)branch用于新的開(kāi)發(fā)工作而不影響主源碼基(稱(chēng)作trunk)。在一個(gè)branch上的開(kāi)發(fā)仍會(huì)繼續(xù)進(jìn)行,直到開(kāi)發(fā)者已經(jīng)為把變化集成回主trunk作好準(zhǔn)備。
在Subversion中,branch和tag都是通過(guò)制作給定修訂的一個(gè)虛擬副本(以另一個(gè)名字和/或另一個(gè)目錄)創(chuàng)建的。在常規(guī)情況下,branch存儲(chǔ)在branches目錄下,tag位于tags目錄下,盡管在實(shí)踐中為了滿足你的工程你可以使用自己的任何定制。
從Eclipse中,"Team>Branch/Tag"菜單能夠使你創(chuàng)建branch和tag(參考圖9)。其中,Browse按鈕提供了一種方便的方法來(lái)查看有哪些branch和tag存在于倉(cāng)庫(kù)中。
當(dāng)你使用"Team>Switch"創(chuàng)建成功一個(gè)新的branch或tag時(shí),你可以非常容易地在branches之間進(jìn)行切換。無(wú)論何時(shí)你切換到一個(gè)不同的branch(或返回到trunk),Subversion將僅更新文件(它需要保持你的當(dāng)前工作的副本與目的branch之間的同步)。
(四) 修訂歷史
象大多數(shù)SCM系統(tǒng)一樣,Subversion讓你跟蹤你的源碼的變化。"Team>Show in Resource History"菜單選項(xiàng)能夠使你查詢這些變化的列表(包括對(duì)一個(gè)文件,目錄或甚至整個(gè)工程的改變)(見(jiàn)圖10)。
記住,在Subversion中,提交是原子性的-一次提交由一組文件變化和一個(gè)全局注釋組成。"SVN Resource History"視圖向你顯示每一次提交的一個(gè)簡(jiǎn)明視圖,包括修改的文件和相關(guān)注釋。
四、結(jié)論
Subversion是一種強(qiáng)有力的和非常靈活的SCM工具,也是CVS的一個(gè)成功的后繼者。結(jié)合Subclipse,Subversion能最終在你的Eclipse IDE環(huán)境中得到全面的發(fā)揮。
軟件配置管理(SCM)是管理源碼并保持其安全的良好藝術(shù),它能實(shí)現(xiàn)源碼與其他團(tuán)隊(duì)成員之間保持共享,并且能夠?qū)χ右员Wo(hù)。良好地利用SCM,你能夠容易地跟蹤軟件的發(fā)行和新的開(kāi)發(fā)分支;這樣以來(lái),可以更為容易地標(biāo)識(shí)和修正發(fā)行產(chǎn)品中的錯(cuò)誤。
其實(shí),有大量的SCM工具可用,既有開(kāi)源的和也有商業(yè)化的,例如StarTeam,Perforce,BitKeeper和ClearCase。在開(kāi)源世界里,事實(shí)上的SCM標(biāo)準(zhǔn)是并發(fā)版本管理系統(tǒng)(CVS),它被廣泛應(yīng)用于世界范圍內(nèi)的成百上千的開(kāi)源和商業(yè)工程。然而,CVS也存在下列許多固有的缺陷,這使得它無(wú)法非常完美地適合于現(xiàn)代工程開(kāi)發(fā):
· 實(shí)質(zhì)上針對(duì)文本文件的設(shè)計(jì)使得CVS處理二進(jìn)制文件能力比較差。在每一次提交時(shí),二進(jìn)制文件被以整體形式傳輸和存儲(chǔ),這將帶來(lái)帶寬和磁盤(pán)空間的浪費(fèi)。
· 在CVS中,你不能移動(dòng)文件和目錄。你唯一的選擇基本上就是刪除并且重新添加它們,從而失去了整個(gè)過(guò)程中的所有的文件歷史信息。
· CVS中沒(méi)有實(shí)現(xiàn)原子提交的概念。比方說(shuō),你要把10個(gè)文件提交到服務(wù)器,而該提交操作往往在整個(gè)過(guò)程的中途停了下來(lái)。(這很可能會(huì)發(fā)生,如果某人同時(shí)提交一個(gè)文件,或甚至如果你的網(wǎng)絡(luò)失敗或你的PC重新啟動(dòng)的話。)在這種情況下,服務(wù)器將僅記錄下你的修正的一半信息,這可能會(huì)使代碼基部分處于一種潛在地不穩(wěn)定的狀態(tài)。
Subversion是一種比較新的開(kāi)源SCM工具,其設(shè)計(jì)目的是力圖從根本上克服原CVS所具有的限制。它是一種良好設(shè)計(jì)的工具,具有適合于現(xiàn)代開(kāi)發(fā)的許多新特征:
· 提交是原子化的。提交的文件都能夠被正確加入到一個(gè)新的修訂當(dāng)中,否則倉(cāng)庫(kù)不會(huì)被更新;并且每一個(gè)新的修訂僅由一次提交中的變化部分組成。
· Subversion對(duì)文本和二進(jìn)制文件使用一種巧妙的二進(jìn)制技術(shù),這既優(yōu)化了網(wǎng)絡(luò)流量也優(yōu)化了倉(cāng)庫(kù)磁盤(pán)空間。
· 在Subversion中,每一次修訂都代表了一個(gè)特定時(shí)間內(nèi)完整的目錄樹(shù)拷貝。文件和目錄可以不加限制地進(jìn)行移動(dòng)。
· Subversion僅存儲(chǔ)兩個(gè)版本之間的修改內(nèi)容,這不僅節(jié)約了磁盤(pán)空間,并且意味著標(biāo)識(shí)一個(gè)新版本或創(chuàng)建一種新的子內(nèi)容幾乎可以立即實(shí)現(xiàn)。
· 你可以以多種途徑來(lái)存取一個(gè)Subversion倉(cāng)庫(kù),具體則依賴于你的需要:使用HTTP或HTTPS(與WebDAV一起使用),使用快速的專(zhuān)利性svn:協(xié)議,或直接經(jīng)由本地文件,等等。
二、Subclipse插件與Eclipse的集成
一種良好的SCM應(yīng)該與你的工作環(huán)境緊密地集成到一起。沒(méi)有誰(shuí)真正喜歡轉(zhuǎn)到命令行以把文件添加到倉(cāng)庫(kù)。Eclipse很早就實(shí)現(xiàn)了CVS集成,但是直到最近Subversion用戶仍沒(méi)有被引起重視?,F(xiàn)在,新的Subclipse插件提供了在Eclipse中的一種平滑的Subversion集成。
(一) 安裝Subclipse插件
下面,你以通常的方法從更新站點(diǎn)下安裝Subclipse:
1. 打開(kāi)"Find and install"窗口("Help>Software Updates>Find and Install")。
2. 選擇"Search for new features to install"選項(xiàng)并點(diǎn)擊Next。
3. 點(diǎn)擊"New Remote Site"并且創(chuàng)建一遠(yuǎn)程站點(diǎn),使用名字Subclipse和URL http://subclipse.tigris.org/update_1.0.x(參考圖1)。
4. 在結(jié)果安裝窗口中,把"Subeclipse in the Features"選擇到安裝列表中,并且通過(guò)向?qū)?lái)開(kāi)始安裝插件。
5. 完成這些之后,重新啟動(dòng)Eclipse。現(xiàn)在,你可以繼續(xù)往下進(jìn)行!
現(xiàn)在,既然你已經(jīng)安裝完插件;那么,接下來(lái),你需要告訴它你的工程倉(cāng)庫(kù)位于何處。你是在SVN Repository視圖中實(shí)現(xiàn)的。打開(kāi)這個(gè)視圖("Windows>Show View>Other>SVN Repository")并且在上下文菜單中選擇"New>Repository Location"以顯示一個(gè)如圖2所示的對(duì)話框。輸入適當(dāng)?shù)腢RL并且點(diǎn)擊"Finish"。
(三) 檢出(Check Out)一個(gè)工程
一旦建立一個(gè)倉(cāng)庫(kù),你就可以在SVN Repository視圖中瀏覽所有的內(nèi)容(見(jiàn)圖3)。我們后面將會(huì)看到,這個(gè)視圖是一種與Subversion進(jìn)行交互的非常方便的方式。

圖3.SVN Repository視圖。
現(xiàn)在,讓我們把一個(gè)工程檢出到你的Eclipse工作區(qū)中。這只需選擇你需要的Subversion倉(cāng)庫(kù),打開(kāi)上下文菜單,并且選擇"Checkout"即可。這將打開(kāi)一個(gè)具有兩個(gè)選項(xiàng)的向?qū)В?
· Check out as a Project configured using the New Project Wizard-這個(gè)選項(xiàng)打開(kāi)新工程向?qū)?,這可以讓你使用內(nèi)建的Eclipse工程類(lèi)型配置工程。這個(gè)選項(xiàng)通常是最好用的,因?yàn)樗屇闶褂孟嗤墓こ棠0搴团渲闷聊?,而?dāng)你創(chuàng)建一個(gè)常規(guī)工程時(shí)你經(jīng)常使用它們。
· Check out as a Project in the Workspace-這個(gè)選項(xiàng)簡(jiǎn)單地在你的包含檢出源碼的工作區(qū)中創(chuàng)建一個(gè)Eclipse工程。
在以上兩種情況下,你仍然需要更新工程的構(gòu)建路徑,因?yàn)樵跈z出該工程源碼之前,Eclipse不能確定這些 Java 源碼所在的位置。
(四) 把一個(gè)新工程導(dǎo)入到倉(cāng)庫(kù)中
如果你只是啟動(dòng)了一個(gè)新的工程,那么你需要把它導(dǎo)入到Subversion倉(cāng)庫(kù)。Subclipse提供了一種方便的方式來(lái)直接從你的IDE內(nèi)部實(shí)現(xiàn)這一點(diǎn)。為此,只需要從Package Explorer視圖下選擇你的工程,并且在上下文菜單中選擇"Team>Share Project"。你可以使用現(xiàn)有倉(cāng)庫(kù)之一或創(chuàng)建一新的倉(cāng)庫(kù)定義。在你指定倉(cāng)庫(kù)和工程名之后,你能指定你想放到倉(cāng)庫(kù)中的文件和目錄并且提供一個(gè)初始注釋(見(jiàn)圖4)。這種方法特別有用,因?yàn)樗屇阌羞x擇地導(dǎo)入僅由Subversion管理的文件,即使該工程還包含其它文件(例如生成的類(lèi),臨時(shí)文件或其它不是必需的內(nèi)容等)。
< object codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0 height=200 width=240 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000> < /object>
三、在Eclipse中使用Subversion
現(xiàn)在,既然你的支持Subversion的工程已經(jīng)啟動(dòng)并且運(yùn)行起來(lái),那么大多數(shù)必要的Subversion命令就可經(jīng)由"Team"上下文菜單存取(參考圖5)。你可以在Package Explorer中看到你的本地文件的狀態(tài)(參考圖6),其中,任何修改了的文件都被標(biāo)記上一個(gè)星號(hào)。存儲(chǔ)在倉(cāng)庫(kù)中的文件都顯示一個(gè)小黃桶圖標(biāo)(代表了一個(gè)數(shù)據(jù)庫(kù));還沒(méi)有被添加到倉(cāng)庫(kù)中的文件以一個(gè)問(wèn)號(hào)顯示。
(一) 與Repository保持同步
從倉(cāng)庫(kù)中更新你的文件并且把你的變化提交到倉(cāng)庫(kù)是相當(dāng)直接的過(guò)程,這可以使用"Team>Update and Team>Commit"菜單選項(xiàng)來(lái)實(shí)現(xiàn)。在提交你的變化之前,你可能想看一下自從你的上次更新以來(lái)是否服務(wù)器上有任何文件被修改。為此,你可以使用"Team >Synchronize with Repository"。這個(gè)命令讓你看到有哪些內(nèi)容已經(jīng)被局部地修改,有哪些內(nèi)容在服務(wù)器上修改,以及這兩種修改之間的任何沖突(參考圖7)。你還可以以可視化方式看到?jīng)_突的版本,并且在提交你的變化之前糾正任何比較突出的沖突。
(二) 使用屬性
屬性是Subversion具有創(chuàng)新性的特征之一。在Subversion中,你可以把元數(shù)據(jù)("properties")關(guān)聯(lián)到任何文件或目錄。你可以定義任何你喜歡的屬性,但是Subversion也提供了一些有用的內(nèi)置屬性,例如下面圖8中所提供的這些屬性:
· svn:executable屬性,允許你在支持這種能力的操作系統(tǒng)上設(shè)置一個(gè)文件的可執(zhí)行標(biāo)志。
· svn:need-lock屬性,可以用來(lái)在文件(例如,對(duì)二進(jìn)制文件非常有用)上強(qiáng)加排斥鎖。一個(gè)定義了svn:need-lock屬性的文件一次只能被一個(gè)人修改。當(dāng)該文件被檢出時(shí),它是只讀的。如果你想修改該文件,你需要首先使用"Team>Lock"菜單選項(xiàng)。之后,使用"Team>Unlock"釋放該文件,或僅提交你的變化。這一行為將釋放該鎖并且讓其它的用戶也得到該文件上的一把鎖。
在Subversion中,很容易創(chuàng)建新的tag和branch。你可以使用tag來(lái)標(biāo)識(shí)一個(gè)特定的版本(使用一種可讀的名字,例如"Release 1.0")。;而一個(gè)branch用于新的開(kāi)發(fā)工作而不影響主源碼基(稱(chēng)作trunk)。在一個(gè)branch上的開(kāi)發(fā)仍會(huì)繼續(xù)進(jìn)行,直到開(kāi)發(fā)者已經(jīng)為把變化集成回主trunk作好準(zhǔn)備。
在Subversion中,branch和tag都是通過(guò)制作給定修訂的一個(gè)虛擬副本(以另一個(gè)名字和/或另一個(gè)目錄)創(chuàng)建的。在常規(guī)情況下,branch存儲(chǔ)在branches目錄下,tag位于tags目錄下,盡管在實(shí)踐中為了滿足你的工程你可以使用自己的任何定制。
從Eclipse中,"Team>Branch/Tag"菜單能夠使你創(chuàng)建branch和tag(參考圖9)。其中,Browse按鈕提供了一種方便的方法來(lái)查看有哪些branch和tag存在于倉(cāng)庫(kù)中。
當(dāng)你使用"Team>Switch"創(chuàng)建成功一個(gè)新的branch或tag時(shí),你可以非常容易地在branches之間進(jìn)行切換。無(wú)論何時(shí)你切換到一個(gè)不同的branch(或返回到trunk),Subversion將僅更新文件(它需要保持你的當(dāng)前工作的副本與目的branch之間的同步)。
(四) 修訂歷史
象大多數(shù)SCM系統(tǒng)一樣,Subversion讓你跟蹤你的源碼的變化。"Team>Show in Resource History"菜單選項(xiàng)能夠使你查詢這些變化的列表(包括對(duì)一個(gè)文件,目錄或甚至整個(gè)工程的改變)(見(jiàn)圖10)。
記住,在Subversion中,提交是原子性的-一次提交由一組文件變化和一個(gè)全局注釋組成。"SVN Resource History"視圖向你顯示每一次提交的一個(gè)簡(jiǎn)明視圖,包括修改的文件和相關(guān)注釋。
四、結(jié)論
Subversion是一種強(qiáng)有力的和非常靈活的SCM工具,也是CVS的一個(gè)成功的后繼者。結(jié)合Subclipse,Subversion能最終在你的Eclipse IDE環(huán)境中得到全面的發(fā)揮。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
