上一篇中,我使用Subversion建立了自己的版本庫,服務(wù)器端使用的是Subversion自帶的工具svnserve。當(dāng)然,實(shí)際應(yīng)用中更流行的是使用httpd搭配Subversion模塊。使用httpd的安裝和配置方法見http://www.tkk7.com/jarod/archive/2007/10/27/156372.html建立服務(wù)器后,就可以使用它來工作了。我先建立了一個Hello World工程,然后將它導(dǎo)入到版本庫。由此可見,向版本庫中導(dǎo)入數(shù)據(jù),是使用版本庫的第一個步驟,然而,這個步驟并不常用,因?yàn)槊總€項(xiàng)目只需要導(dǎo)入一次而已。假設(shè)youxia導(dǎo)入這個工程后,就下班回家休息了,但是onionz是一個夜貓子,他在晚上又對這個工程進(jìn)行了更改。第二天一早,youxia又開始他的工作,他想知道在他休息的時(shí)候項(xiàng)目有什么新的進(jìn)展,這個時(shí)候,他可以在項(xiàng)目名上點(diǎn)鼠標(biāo)右鍵,從快捷菜單中選擇“比較對象”->“資源庫中的最新內(nèi)容”,如下圖:從下面圖中可以看到,有哪些文件進(jìn)行了更改,也可以看到改變的是這些文件的哪幾行:看完之后,youxia應(yīng)該把版本庫中的最新內(nèi)容更新到他的工作拷貝中,以便進(jìn)行他這一天的工作。他可以選在快捷菜單中的“小組”->“更新”,如下圖:這個時(shí)候,版本庫中的最新內(nèi)容就會被下載到y(tǒng)ouxia的工作拷貝中,下圖是控制臺的輸出內(nèi)容,其中文件名前的“A”代表這個文件是新增加的,而“U”代表這個文件是被更改過了的。如下圖:由于截圖太占用屏幕空間,因此,下面的菜單操作將不再提供圖片了,畢竟,跟SVN有關(guān)的操作都在“小組”和“比較對象”這兩個菜單中,用起來也很簡單。這個時(shí)候,youxia就可以使用他的工作拷貝來進(jìn)行他的工作了。在他完成修改后,他需要把他的工作提交到服務(wù)器。不過且慢,再提交之前還是先看看今天做了哪些工作,要檢查清楚,不然,有可能把不小心進(jìn)行的誤操作也提交到版本庫。要查看做了哪些修改,可以選擇菜單“比較對象”->“基本修訂版”,比較結(jié)果如下圖:在這里,我要對“基本修訂版”做一個解釋,什么是基本修訂版呢?我們可以理解成我們剛剛更新后存儲在工作拷貝中的版本,也就相當(dāng)于我們的工作還沒開始進(jìn)行時(shí)的內(nèi)容。因此,這個比較得到的結(jié)果就是我們今天工作的成果。在這個強(qiáng)大的IDE中,其實(shí)并不一定需要執(zhí)行這個命令,只要看看工作臺左邊的“包資源管理器”,文件圖標(biāo)發(fā)生了變化的文件,都是被修改過了的。確認(rèn)之后,點(diǎn)擊快捷菜單“小組”->“提交”,youxia就把他今天的所有工作都提交到版本庫中了。以上的流程,比較類似于單用戶工作的模式,沒有沖突發(fā)生。整個過程可以總結(jié)為“更新”——“修改”——“提交”,中間夾雜著兩次“比較”,其實(shí)要不要比較也無所謂。然而現(xiàn)實(shí)工作中往往比這要復(fù)雜得多,極有可能是多個用戶在同時(shí)編輯同一個文件,當(dāng)你想提交的時(shí)候,版本庫中的內(nèi)容已經(jīng)發(fā)生了改變。如果發(fā)生沖突,提交過程會失敗,如下圖:這個時(shí)候,就需要再一次點(diǎn)擊快捷菜單“小組”->“更新”,所有的沖突就可以體現(xiàn)出來了,如下圖:這個時(shí)候,就需要和修改了該文件的程序員進(jìn)行溝通了,在達(dá)成一致后,才能決定這個文件最終保留什么內(nèi)容。切不可在沒有溝通的情況下隨便刪掉別人的內(nèi)容,那太不尊重人了,除非你是這個項(xiàng)目的老總。形式上的修改之后,還要考慮到這么修改以后軟件是否可以正常運(yùn)行,這就離不開單元測試了。測試通過之后,可以點(diǎn)擊快捷菜單“小組”->“標(biāo)記為已解決”來告訴SVN沖突已經(jīng)被解決了。最后,點(diǎn)擊“小組”->“提交”,將最后的修改提交到版本庫。
?在有沖突發(fā)生時(shí),整個過程可總結(jié)為“更新”——“修改”——“試提交”——“溝通”——“解決沖突”——“單元測試”——“提交”。
Powered by: BlogJava Copyright © 京山游俠