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