Monday, June 11, 2007

WinCVS 2.x 快速入門 (五) Diff (程式差值查詢)

按照順序, 接下來應該講 Add 和commit 的,不過實在是太悶了, 一定會有讀者看到這裡, 認為說了那麼多WinCVS的安裝與使用步驟, 到底CVS除了儲存我的程式碼外, 還有什麼其它我非用不可的理由, 所以我想, 我先來介紹Diff這個功能, 也算是先讓大家有繼續看下去的理由

CVS 是個版本控制器, 存放了很都多不同版本的程式碼, 所以它的一個最大的好處, 就是可以比較各個版本的差異, 有時會改程式改到發現一個BUG, 卻不知道改到什麼, 而上一個版本還沒出現, 所以我們就可以透過Diff來看看, 我們這一次改了什麼東西, 有很多BUG,在這個階段就可以被找出來了..!!

接下來所有的示範的 Soruce Code我都以SmallAB 的Source Code來介紹, 一方面也比較真實, 一方面也因為沒有商業機密問題, 因為畢竟SmallAB我沒有打算收錢,而版權也是我自己的


我們先看一下WinCVS 的標準畫面, 在檔案這個一Window 可以看到檔案列表, 紅色(圈1)的即是程式有被修改到的檔案, 可以見到它的版本為1.2(圈2)

我們比較這個檔案到底改了什麼地方, 所以在此按滑鼠右鍵, 點選Diff , 進入Diff Settings


首先如果是第一次使用者, 必須先把 Use the external diff(圈1) 給勾起來, 因為我們想要以WinMerge來做為比較的工具, 內建的只有文字比較, 比較不直覺

Diff Compare options (圈2)的地方, 有三種options 可以選

1. Local copy against the snae remote revision :

這種模式是改變後的程式碼CVS Server 最新版本(如果有下tag,不一定是最新版本,但會是此tag的最新版本,)做比較

此種比較方式, 常用來比較這次修改的程式碼有哪些




2. Local copy against another revision/tag/branch or date :

這種模式是改變後的程式碼指定版本的程式碼做比較 , 可以看到圈2已經打開, 這裡必需輸入你欲指定的版本編號

此種方式常用於比較較舊的版本與目前修改的程式做比較


3. Two revisions/tags/branches or dates anainst each other :

這種模式是兩個指定版本的程式碼做比較

這個常用於尋找某次版本改了什麼, 例如果想知道1.2改了什麼, 我們就會針對1.1與1.2做比較,但卻不是與目前修改的程式做比較, 這個Option其實與 option 2 一樣, 較少用, 因為graph的功能會比較直覺,我在介紹graph 時會詳細說明



當選定好比較的模式後, 點選確定就會直接呼叫WinMerge來比較
可以看到左邊有兩欄長條狀的, 只有最下面有顏色(圈1), 這就表示整篇程式碼, 只有這個地方有做改變, 用滑鼠直接點這裡, 就可以直接跑到這一段被改變的程式碼.

由右方的兩個程式碼視窗就可以看到改變什麼了(圈2), 這個GetRecordCount函式我加入了以條件設定的方式來讀取記錄數, 舊的程式只能讀取整個Table的記錄數

這就是CVS 好用的地方, 可以必較任何時候的Code, 以防只亂改, 並且可以幫助要上傳的Code再做一次簡查,看有沒有埋測試的Code在不應該留的地方

相關連結

WinCVS 2.x 的快速入門 安裝篇
WinCVS 2.x 的快速入門 設定篇
WinCVS 2.x 快速入門(二) Login for pserver (登錄)
WinCVS 2.x 快速入門(三) Checkout module (下載)
WinCVS 2.x 快速入門(四) Import module (載入程式)