2017年3月2日 星期四

在linux下,SVN基本的指令

首先先來了解 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上最新版本.

  • svn up


Commit: 將目前所修改的部分 commit 回 SVN Server

  • svn ci


Status: 查看目前檔案結構 跟 SVN Server上的版本有哪些不同

  • svn st


Add: 新增檔案或目錄到 svn

  • svn add File 或 svn add DIR


MV: 更改檔名, 並且此檔案之前紀錄還要繼續留下

  • svn mv filename new_filename


Revert: 還原這次的修改, 回到前一版(未 commit 前可使用)

  • svn revert [File | DIR]


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: 列出現在路徑, 版本編號, 最後一次修改日期等等的資訊

  • svn 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 等.)

沒有留言:

張貼留言