什麼是SVN(Subversion)?

有一個簡單但不十分精確比喻:



SVN = 版本控制 + 備份伺服器

簡單的說,您可以把SVN當成您的備份伺服器,更好的是,他可以幫您記住每次上傳到這個伺服器的檔案內容。並且自動的賦予每次的變更一個版本。



通常,我們稱用來存放上傳檔案的地方就做Repository。用中文來說,有點像是檔案倉庫的意思。不過,通常我們還是使用Repository這個名詞。基本上,第一次我們需要有一個新增(add)檔案的動作,將想要備份的檔案放到Repository上面。日後,當您有任何修改時,都可以上傳到Repository上面,上傳已經存在且修改過的檔案就叫做commit,也就是提交修改給SVN server的意思。針對每次的commit,SVN server都會賦予他一個新的版本。同時,也會把每次上傳的時間記錄下來。日後,因為某些因素,如果您需要從Repository上下載曾經提交的檔案。您可以直接選擇取得最新的版本,您也可以取得任何一個之前的版本。如果您忘記了版本,您還是可以靠記憶嘗試取得某個日期的版本。



為甚麼要用SVN?

備份您的工作檔案是十分重要的。您永遠不知道您電腦上得硬碟何時會壞掉。根據經驗法則再加上摩菲定理,事情往往都發生在最重要的時刻。例如,要release東西的前一刻,硬碟完全壞掉,無法修復。所以,常常備份您的工作資料是非常重要的。大部分公司server都會有專門的備份機制,甚至是異地備援。絕對比您放在自己的電腦裡頭,或是隨身碟上面來的安全。

版本控管非常重要。您無法保證手頭上最新版本永遠都是對的。很多時候,在經過數天努力工作後,您才發現走錯方向。需要將所有的修改回復到數天前版本。沒有幾個人能夠完全記住自己修改過什麼東西。如果您沒有做好版本控管,那麼,最差的狀況就是要全部重來。

夥伴間的資料同步也是非常重要的。很多時候,除了您個人外,還有其他的夥伴也需要您的檔案。您怎麼把最新的檔案給夥伴呢?用e-mail?根據經驗,用e-mail是一個很差的辦法。到了最後,根本就不知道哪一封e-mail才是新的。因為可能您最新的e-mail已經被當成垃圾信給丟了。別忘了,現在很多e-mail軟體都有anti-spam的功能,說不定這些信件都被當場廣告信給處理掉了。而且,您知道一般檔案如果放在e-mail內,檔案大小會變得比較大(通常是原來的4/3倍以上)。如果每天更新一次,恐怕您幾天沒收信的話,信箱就爆了!

如果沒有一個好的辦法,備份不同版本是很耗費硬碟空間的。例如:您有一個總共10MB的目錄,使用單純的檔案備份。如果有10個版本就會變成100MB。20個版本就有200MB。如果,您不想備份這麼多版本,勢必就是要減少備份的次數。拉長備份週期將會導致資料遺失的危險性增高。把舊的不需要的備份刪除?根據經驗,只要時間一拉長,您跟本就不知道一個月以前的版本是重要或者是不重要。

SVN能幫我們解決上面的問題嗎?答案是肯定的:



SVN Repository可以是您自己電腦上的一個目錄,或者是隨身碟。當然也可以是公司的伺服器。

SVN有很棒的版本控管機制。所有上傳的版本都會幫您記錄下來。日後您可以隨時取得某一個時刻的版本。而且,也有版本分支及合併的好用的功能。

SVN可以讓不同的開發者存取同樣的檔案,並且利用SVN Server作為檔案同步的機制。也就是說,您有檔案更新時,無須將檔案寄給您的開發成員。只需要告訴他新的版本已經在SVN Server上面,請他自己去SVN Server上面就可以取得最新版本。而且,SVN Server也可以做到當您上傳本版本後,自動發信給相關的成員。

SVN的存放檔案方式是採用差異備份的方式。也就是說,他只會備份有不同的地方。所以很省硬碟空間。此外,他也可以針對所謂的非文字檔進行差異備份。

狼翔月影 發表在 痞客邦 PIXNET 留言(0) 人氣()