淺談我為什麼需要版本管理?版本管理的好處
- 2010-02-08
- 32039
- 0
- Subversion SVN 版本控管
很多人都說,我事業沒有做很大,我沒有在外面接案子我為什麼需要版本管理?
其實這問題相當的常見,但是只要真的做過版本管理的人,只需要用到一次,你就會發現版本管理的可愛之處,心血不會因為人為疏失而付之一炬,只要你開始做版本管理,你甚至可以回到最初的版本,這對於管理檔案、文件都是一個相當美好的體驗。
如同demo常說的備份檔案是一件很重要的課題,像demo製作 demoshop V4 的時候就發生過四次以上的資料消失的事件,不管是檔案誤刪、硬碟掛掉或是用舊檔覆蓋到新檔,這電腦用久了多多少少都會遇到,而且遇到的時候往往都已經無法挽回,只能對者天空說下一次做出來的會更好,只不過這是個人的事情,沒有時程壓力的事情才可以那麼坦然與豁達,如果你今天做的是公司的案子或是外面接來的案子結案前一天硬碟和你說掰掰,我敢說你一定會瘋掉,所以備份工作的重要性都是遇過才知道。
而版本控管算是比較 Smart 的作法,因為他不只做好每一次的版本管理,也同時做了每一個版本的備份工作,為什麼需要版本控管?在事情進行的時候雖然已經有了大方向,但是很多時候我們不會是決定方向的人,當上層說往左走一點,我們就必須要往左,往右就要往右,往前走都好辦,偏左偏右只是小修改,不過往往事與願違,上層是很經常的和你說剛剛經過的路口要左轉,這時候好了,你要怎麼把你的思緒往回拉?已經做好的東西幹掉重來嗎?當你下了決心放棄重來的時候,上層又來一句:「還是別轉了,繼續直走」。難道要我們把前幾天刪掉的東西再寫一次嗎?沒有多少人能夠記憶幾天前自己的修改,如果有了版本控管,你可以隨意的回到任何時刻的版本。
而且現在協同工作是很常見的,你做我也做怎麼能確保大家的版本都是最新的,難保不會有夥伴拿舊版本去修改,改完以後還很好心的蓋掉最新版本,導致其他人的心血都白費。有了版本控管所有人都可以得到最新的檔案,就算在你完成部分工作後版本控管的檔案已經更新了,你也無需擔心自己會蓋掉別人的心血,版本控管工具幫你做的好好的。
說了那麼多,就要來介紹一款版本控管的好工具 SVN 而且它完全是免費的。
SVN的特性
- 統一的版本號。CVS是對每個文件順序編排版本號,在某一時間各文件的版本號各不相同。而Subversion下,任何一次提交都會對所有文件增加到同一個新版本號,即使是提交並不涉及的文件。所以,各文件在某任意時間的版本號是相同的。版本號相同的文件構成軟體的一個版本。
- 原子提交。一次提交不管是單個還是多個文件,都是作為一個整體提交的。在這當中發生的意外例如傳輸中斷,不會引起數據庫的不完整和數據損壞。
- 重新命名、複製、刪除文件等動作都在版本歷史記錄當中可以查詢的到。
- 對於二進制文件,使用了節省空間的保存方法。(簡單的理解,就是只保存和上一版本不同之處也就是差異備份)
- 目錄也有版本歷史。整個目錄樹可以被移動或者複製,操作很簡單,而且能夠保留全部版本記錄。
- 分支的代價非常小。
- 優化過的數據庫訪問,使得一些操作不必訪問數據庫就可以做到。這樣減少了很多不必要的和數據庫主機之間的網路流量。
- 支持中繼資料(Metadata)管理。每個目錄或文件都可以定義屬性(Property),用戶可以自定義屬性內容,而且屬性和文件內容一樣在版本控制範圍內。
- 支持FSFS和Berkeley DB兩種資料庫格式。
(以上特性 節錄至 WIKI )
如果你還是不太了解 SVN 這裡有一個30秒的動畫,利用動畫來讓你快速了解 SVN 在幹什麼 「連結」
YouTube上也有一系列的說明與教學「連結」
對於洋文吃力的也可以參考全中文的使用教學「連結」
不想只會應用不知道原理的就可以參考以下文件
- [英文版] Version Control with Subversion (Compiled from r2866)
- [簡體中文版] Subversion 权威指南 - 针对 Subversion 1.4 (根据 r2866 编译)
- [繁體中文版] Subversion 權威指南 - 針對 Subversion 1.4 (根據 r2866 編譯)(will保哥 翻譯)
當然 demo小鋪 也提供了一些簡單應用的方式
【無腦安裝 SVN 過程,使用 Visual SVN】
【TortoiseSVN 最佳 SVN Client 軟體(安裝與Commit】
回應討論