首先先來了解 SVN Trunk, Tags, Branches 這三個的概念
- trunk: Main line of development(主要的開發線)
- tags: Releases (想要 Release 時, 可以標Tag, 之後可依 Tag 來找回之前版本的資料)
- branches: Preparation of release, bug fixing(分支)
接下來是SVN 基本功能,以及指令操作:
Import: 將整個 project_directory 的資料 import 進 svn 裡面
- svn import project_directory http://domain_name/svn_project
Checkout: 將整個project從svn checkout 回來
- svn co http://domain_name/svn_project
- svn co -r 5 http://domain_name/svn_project # checkout第5版的 projcets
List: 列出project中的檔案/資料
- svn ls http://domain_name/svn_project
Update: 將目前版本更新成 SVN Server上最新版本.
Commit: 將目前所修改的部分 commit 回 SVN Server
Status: 查看目前檔案結構 跟 SVN Server上的版本有哪些不同
Add: 新增檔案或目錄到 svn
- svn add File 或 svn add DIR
MV: 更改檔名, 並且此檔案之前紀錄還要繼續留下
- svn mv filename new_filename
Revert: 還原這次的修改, 回到前一版(未 commit 前可使用)
SVN 檔案狀態資訊:
?: 此檔案不存在 SVN 裡面
A: 此次新增的檔案
C: 此檔案已經有人改過, 合併不成功, 需要人工介入
D: 此次移除的檔案
M: 此檔案有修改過
U: 此檔案有被更新過
另外有進階的指令:
建立一個 branch:
- svn copy http://domain_name/trunk http://domain_name/branches/my-branch -m 'create a branch'
建立 Release Tags:
- svn copy http://domain_name/trunk http://domain_name/tags/Release_0.1 -m 'create Release tags for Release 0.1'
合併兩個版本的檔案 //參考自: 用 Subversion 的 Merge 來 Undo
svn merge -r REV1:REV2 {path/to/workingcopy}
(UNDO) svn merge -r 123:122 ...
(MERGE)svn merge -r 123:124 ...
svn merge --dry-run -r 343:344 http://domain_name/trunk
有 "C" 狀態處理完後, 用 resolved 將自動產生的檔案刪除, 才能正常 commit:
- svn resolved filename //會把自動產生 diff 等等的檔案刪除
找版本間有什麼不同 diff:
- svn diff //自動以現在檔案跟 SVN 內最新版做 diff
- svn diff -r123:124
Info: 列出現在路徑, 版本編號, 最後一次修改日期等等的資訊
Log: 如果沒輸入參數, 預設會把所有 commit log 都列出來
- svn log
- svn log -l 10 //顯示最新10筆Log
- svn log -c 100 //顯示 revision 100 的 Log
- svn log -v -c 100 //顯示 revision 100 的詳細 Log
relocate: 假設你的SVN Server換IP Address了,使用此參數來重新定位你目前的這包code
- svn relocate svn://192.168.1.3/home/repos/test/branch/FW
Propset (propset, pset, ps): 版本控制都有些特殊 Keyword 設定, 如 Id 就是最常用的, 設定方法如下:
在檔案內找地方加入 $Id$
設定此檔案要能吃 Id 的 Keyword: svn ps svn:keywords 'Id' filename (只需設一次即可, 之後就不用再設)
svn ci 後, $Id$ 會自動代換成 $Id:filename 編號 年月日時分秒 username $ 的資訊
svn help ps 可以看到有哪些 Keyword 可以用, 即 Keyword 的說明.(ex: URL, Author, Date, Rev, Id 等.)