關於版本控制 要把檔案恢復到編輯前的狀態,大家都是怎麼做的呢? 我在大學的時候做報告時, 最簡單的方法就是先複製編輯前的檔案, 使用這個方法時通常都會在檔案名稱或目錄名稱上添加編輯的日期 ,這就是所謂的本地端的版本控制 。但是,每次編輯檔案都要複製非常的麻煩,也很容易出錯。 上面的例子是我以前做報告時的命名方式,如果沒有察看詳細資料,就沒有辦法區別那一個檔案是最新的。此外,如果是共享的檔案要區分不同編輯者,要具體區分更改了什麼也不容易知道。 此外,如果有兩個人要對同檔案進行編輯,先進行編輯的人的修改內容會被覆蓋,導致資料流失,相信大家都有這樣的經歷。 為了解決這個問題,便有開發者產生了版本控制系統,早期大多都是採用簡單的資料庫來紀錄文件的歷次更新差異,這種版本控制又稱為本地端版本控制系统 ,其中最流行的叫 RCS ,現在的 Mac OS X 系统上安装了開發者工具後,也可以使用 rcs 命令。 它的工作原理是保存不同檔案的每一個版本, 透過比較不同的版本,可以計算出各個版本的文件内容中有那些差異 。 集中式版本控制系统 接下來有開發者遇到一个问题,如何讓在不同系统上的開發者協同作業? 於是,集中式版本控制系统(Centralized Version Control Systems,簡稱 CVCS)誕生了。 像是 CVS 、 Subversion 以及 Perforce 等,都有一個單一的集中管理的伺服器,保存所有文件的修訂版本,而偕同作業的開發者都透過客户端軟體連到這台伺服器,取出最新的文件或者提交更新,這已成為版本控制系统的標準做法。 相對於舊式的本地端VCS來說,集中式版本控制有許多優點,例如: 1. 每個人都可以在一定程度上看到項目中的其他人正在做些什麼 2. 管理員也可以輕鬆掌控每個開發者的權限 3. 並且管理一個CVCS要遠比在各個客戶端上維該端的資料庫來得輕鬆容易 然而,這種類型的系統仍有缺點: 1. 中央服務器的單點故障 。如果宕機一小時,那麼在這一小時內,誰都無法提交更新,也就無法協同工作。 2. 如果中心數據庫所在的磁盤發生損壞,又沒有做備份,毫無疑問你將遺失所有資料 - 包括項目的整個更變歷史...