Monday, September 03, 2007

小明曾經回來過

其實我常在中庭找小明, 不過我家實在太多班鳩了, 我大概估算, 光在中庭的就大概有30隻,所以我實在不太確定就算是我找到小明也無法知道哪一隻是小明,

直到昨天, 一隻班鳩停在對面, 開始做起牠特有的瑜伽動作, 我想, 會不會是小明呢, 所以我用特殊的叫聲(那時是為了要他吃飯,後來我只要給他吃飯, 就會用這樣的聲音叫他), 結果他突然站起來, 很興奮的抖動翅膀, 用很小聲的叫著, 就跟小明的叫聲一模一樣, 所以我就試著要給他給call回來, 至少也站在我家同一個位置上

所以我昨天幾乎整個下午到晚上都是坐在窗邊, 這過程拍了不少照片, 有一隻班鳩要來搶地盤, 兩隻就打起來了., 後來小明戰勝, 所照到的畫面肯定精彩, 不過我小舅子說他想看照片, 我才發現LCD 上顯示一行英文 "No CF Card", 好吧..這下搞笑了, 我只好快點拿CF卡來, 不過看來小明就這樣蹲一整天了, 怎麼照都這個樣子了.!!

我一開始叫他還有回應, 不過晚一點就不再理我了, 就這樣坐到看書看到2點要睡時, 他還在上面..!

不過我一早起床, 就沒看到他了...!!
所以跟大家報告, 小明...應該很健康..!!

CVS (Concurrent Versions System)協作版本系統

在寫了一系列的WinCVS 2.x 的文章後, 有人問我, 什麼是CVS, 為什麼要用CVS, 諷刺的是, 回答這個問題的答案, 就是當初我寫這一系列文章的原因, 我以為介紹完WinCVS的使用方法, 就可以讓人知道版本控制器是怎麼一回事, 不過在寫了這麼多篇後,突然被問到這個問題, 讓我不得不停下來想一下是否應該先做個解釋了

CVS 主要為了幾個功能

1. 程式碼備份 :

程式設計者都知道原始程式碼得備份,雖然常常是硬碟壞掉才知道, 因為不像作家, 他們的作品發行後會有人幫他們保存, 而程式設計者只發行執行檔, 而CVS是一個Server , 可以讓你保存不同時期的程式碼, 所以程式碼備份對於CVS是一項重要的功能, 而且他通常是Client/Server 架構(因為它也可以在local作業,只是那會失去開發協同的功能,較少人使用), 意味著備份資料不在本機, 也算是一種異地備份吧

2. 程式碼版本控制:

在一直commit程式碼進CVS 時, 也就一直在做程式不同版本的備份, 因此,也擁有讀取出不同版本的功能, 這有點幾好處,

a. 查核舊版本的程式碼 :

過去就是是過去了, 為什麼要查, 大部份都是因為發行過的舊版程式出了某些問題, 需要查明問題的真正原因, 並確認問題是否有延續到其它版本或是正在開發的版本, 所以我們得取出那個版本的程式碼出來除錯

b. 比較不同版本的改變 :

這個功能我特別在Diff 時展現過他的威力, 他可以快速比較某兩個版本間的差別 ,我常用他來查核同事上傳的程式碼, 與自己改爛的程式碼, 或是為了確認某個Commit時說明寫的不夠清楚, 以至於我必需確定看到修改的程式碼

3. 產品協同開發 :

一個產品的開發, 可能同時由多人同步開發不同功能, 而程式碼會互相影響, 有時甚至同一個cpp 檔案, 會同時有兩個人動到, 所以確認多人開發最後會匯到同一份程式碼或是確定正在開發的是最新的程式碼的動作是協同開發最重要的工作, 而CVS正是為了處理這個問題而來, 也是所有協同程式版本控制器的最主要功能

以上這三點就是CVS這類版本控制器的重要特色, 如果你有這些需求(我還沒看過哪個程式設計者沒有的), 一定要來試試CVS .

不過有趣的是, 眾多這類程式, 為何唯獨CVS這麼多人用,這是一個很有趣的問題, CVS並不是最好用的程式, 這點可以由Linux的老大linus所使用的版本控制器不是CVS就可以看出端倪, 我試著做些解答

CVS 功能還算完整, 但真正的主流原因應該在於它是Open Source, 在SourceForge裡可以看出原因, 它一開始就採用CVS, 因為Open Source 界比一般公司更需要協同開發環境, 因為Open Soruce的專案, 通常多人開發, 而開發人員四散各地, 重點是, 他們是Open Source, 對於程式碼讀取權限的要求並不特別看重,而且因為他們是Open Source, 所以需要找一套也是Open Source的程式, 所以CVS 正是首選, 他免費也Open Source

不過CVS 隨時間增加, 還是漸漸露出疲態, 較鬆散的權限控制, unicode的支援不足(CVSNT有加強,但原始CVS還是沒有動), 對於Binary File的支援不足,所以SVN正是因此產生, 一群人重寫, 企圖取代CVS世界, 事實上由於多年的開發, SVN現在已相當穩定, 像是SourceForge都已經開始有SVN,我所有在注意的幾個Open Source 專案也開始有改到SVN的情況, 這是好現象, 只是在這樣的情況, 為什麼我還要介紹CVS呢!!

其實CVS還是個好東西, 簡單易懂, 而且現存很多專案與公司內部還都是CVS系統, 但是新加入的程式設計者還是需要學習一套版本控制, SVN因為較新,很多人開始觀注, 資料較多, 所以我還是留在CVS, 雖然我用SVN一陣子了, 但是對於CVS 的心得還是大於SVN, 我除了WinCVS 2.x系列外, 還會有其它使用CVS的工具會再持續介紹的

講了這麼多還是不了解CVS嗎? 如果如此, 留一下留言吧, 我在來看看要怎麼說明才能更完整

相關連結

WinCVS 2.x 的快速入門 安裝篇
WinCVS 2.x 的快速入門 設定篇
WinCVS 2.x 快速入門(二) Login for pserver (登錄)
WinCVS 2.x 快速入門(三) Checkout module (下載)
WinCVS 2.x 快速入門(四) Import module (載入程式)
WinCVS 2.x 快速入門 (五) Diff (程式差值查詢)
WinCVS 2.x 快速入門 (六) Commit (提交)
WinCVS 2.x 快速入門(七) Add (加入新檔)
WinCVS 2.x 快速入門(八) Remove, Erase(刪除檔案)
CVS
CVSNT
SVN
WINCVS