Comp. Group Project 必備之物: Subversion

當 你又在問:「你的 xxy.php 改完了沒有?我要加兩句 code 進去啊!」或者驚呼:「甚麼?你剛才 upload 了 kkk.c?那麼我用了三小時寫的 function 呢?給化為烏有了?Oh my…!」的時候,有沒有想過這種情況可以避免呢?要是用傳統的 FTP,我看大家要規限著自己能修改甚麼檔案,非常的沒有彈性。那麼對檔案進行鎖定呢?要是有組員在修改完檔案後忘記釋放修改權,那大家還是不用做了。況 且,以上兩個方法也沒保障萬一開發組員對 server 版本錯手做成的錯誤:那就是,改動是永遠的了,沒辦法回頭,除非每人在更改一次前也進行備份吧…

針 對以上種種的問題,(Software Configuration Managment,源程式碼管理) 軟件便應運而生。 是怎麼運作的?首先軟件會要求使用者在用戶端儲存整份專案(Project)的最新版本,當用戶對本端進行改動後而要儲放,便會向伺服器要求作出存放。伺 服器比對本身存放source code 和客戶端的分別,再進行合併。此外每一次存放紀錄也會自動記進資料庫,很方便吧?就連目錄結構的變更,檔名變更,刪除,也會一一給紀錄在案,所以現在多數 大型專案開發也一定要用到

SCM 軟件?老大哥可算是 CVS(Concurrent Versioning System),現在是大部份開源軟件所應用的一套 SCM。它開源,而且免費,還支援 SSH 等。此外不可不介紹的是 MS 內附在 Visual Studio 的 Sourcesafe。我想不少軟件開法企業也會用上它吧,因為SS 跟整套 VS 的整合性很高,用 VS 的 IDE 一同開發便更得心應手。只不過,CVS 設定難,使用更難;SS 很貴,不是大公司個人是買不下的。所以小弟今次想介紹的是 SVN(Subversion),一套多平台,設定簡單得很的 SCM 軟件。當然它還是免費,開源才吸引了小弟。

SVN 的使用方法簡單得很,先鍵入” svn co [地址] “(checkout)拿一份最新的 source code working copy 到本機去,好讓能慢慢修改。當修改完成後,只要打上 “svn ci” (commit) ,軟件便會把你本機修改過的版本和伺服器的 working copy 比對,然後合併。很方便吧?不過要是你修改的地方和別人修改的地方相同,做成衝突,該怎麼辦?當然,SVN會讓你人手選擇變動的地方,讓兩位開發者(或以 上)作出妥協,再上傳一個新的 working copy。此外,不小心做錯了,可以鍵入”svn revert” 來還原,鍵入”svn status” 可查看用戶端的版本和伺服器端的版本有甚麼分別,”svn diff” 還可查看究竟多了哪一句,少了哪一句呢。 或許CLI 對你來說是太複雜了,那麼 還有很多漂亮的 GUI 版本。例如和 Explorer 整合的 TortoiseSVN,跨平台的 RapidSVN,VS.NET 的 addin ankhSVN,Eclipse 的 plugin subclipse 等等。Apple 更先行一步,Xcode 已內置支援 Subversion 。

伺服器的設定也簡單得很。只要你安裝了 Apache,SVN 便可以和它整合,Apache 的用戶管理也可套用在 SVN 系統上。不想安裝 Apache?不要緊,SVN 另有獨立伺服器版本,是功能少了點罷。詳細我不在這裏說了,留待大家裝一套才去發現發現吧。

Leave a Reply

Your email address will not be published. Required fields are marked *