什麼是 SVN (Subversion)
Subversion(以下簡稱SVN)是一個版本控制系統,使用SVN能同時提供組織多人共有資料的一致性,以及最新最正確的版本控管,適用於文件檔案或是程式碼檔案的管理。
SVN 除了作版本控管以外, 在某種程度上他也可以作為資料的備份. 適用於文字檔以及文件的備份, 大型檔案不適合使用SVN 來作為備份.
使用SVN的時機
在程式開發或文件編輯過程中,你是否碰到過以下幾種情形:
– 檔案被別人(或自己)覆蓋
– 檔案遺失(不小心誤刪檔案…)
– 想要比對各版本之間的程式碼有何不同;
– 想要回到之前修改的版本(需求反覆變更、自己改錯了…)
– 這些 code 不是我改的,是誰碰過我的程式碼?
如果有以上情形,你需要的是對專案進行版本控制(version control). 其目的即在於解決上述各種問題,讓你可以:
- 隨時復原錯誤,就好像是專案的時光回溯器,可以將檔案恢復到之前的任何版本;
- 多人同時修改同一份程式碼,不會有相互覆蓋的情況;
- 保留所有修改的歷程,如果你發現自己的程式碼有被別人更動過,可以很容易找到是誰更改的,以及何時更改的;
SVN 架構
- 檔案庫(Repository)
- 存放所有文件的資料庫.
- 主從式架構(Server/Cleint)
- Server 端 ==> 存放Repository
- Client 端 ==> 使用者本地工作端.
- 版號 (凡走過必留痕跡)
- 每一次異動, 都會增加1個版號. 並且異動內容都會被保存下來.
SVN client 的基本操作
- list
- 查看 Repository 的檔案列表
- log
- 查看修改日誌
- import
- 第一次將本地資料, 放到Repository.
- checkout
- 將文件從Repository 取出, 存放到本地目錄.
- status
- 顯示本地的修改狀態.
- commit
- 提交本地的異動文件到Repository.
- add/delete
- add : 將本地未受版本控管的文件, 加入控管.
- delete : 將控管之文件移除. 未來不再控管.
- update
- 將Repository 最新的文件, 同步到本地
- revert
- 將已修改的文件, 回復到上次未修改的狀態.
SVN 最常用client 軟體(TortoiseSVN)介紹
TortoiseSVN
– 免費, 開放原始碼
– GUI 環境操作, 容易使用
– Windows only, 操作環境可以整合至檔案總管
– 支援多種svn協定:
– http://
– https://
– svn://
– file:///
– 下載地址: https://tortoisesvn.net/
常見的錯誤觀念及習慣
- 單一次變動量太大
- 當發生問題時, 無法利用版號的差異來快速找出問題之所在.
- 任意的存放會經常修改的大型檔案
- 嚴重的增加伺服器負載.