• 未分類
  • 0

SVN 組件及指令


Subversion是由以下組件構成的

svn
客戶端指令列程序

svnversion
此工具用來顯示工作副本的狀態(就是當前項目的修訂版本)

svnlook
直接查看Subversion版本庫的工具

svnadmin
建立、調整和修復Subversion版本庫的工具

svndumpfilter
過濾Subversion版本庫轉儲串流(Streaming)的工具
這個東西我沒用過~我在備份都是採用同步的方式在備份

svnserve
一個單獨運行的伺服器程序,可以作為系統服務(daemon)或由SSH調用。這是另一種使版本庫可以通過網路訪問的方式。
可以使用svn://的通訊協定

svnsync
同步版本庫的程序

mod_dav_svn
Apache HTTP伺服器的一個外掛,讓SVN可以使用HTTP協定

SVN 基本功能:

import :
將整個 project_directory 的資料 import 進 svn 裡面


svn import project_directory http://SVN_PATH/svn_project
svn import project_directory file:///SVN_PATH/svn_project

checkout: (checkout 可簡寫成 co)
將支援庫的資料 checkout 回來


svn co http://SVN_PATH/svn_project
svn co file:///SVN_PATH/svn_project
svn co -r 12 file:///var/lib/svn/dev/projects # 取出編號12版的資料

List: (list 可簡寫成 ls)
查看資源庫內有哪些檔案


svn ls http://SVN_PATH/svn_project
svn ls file:///SVN_PATH/svn_project

Update: (update 可簡寫成 up)
將線上的資料更新最新版本至本機目錄內


SVN_CHECKOUT_DIR$ svn up

Commit: (commit 可簡寫成 ci)
將目前本機端所做的修改 commit 回 svn資源庫內


SVN_CHECKOUT_DIR$ svn ci

Status: (status 可簡寫成 st)
看本機檔案/結構 跟 SVN 線上的版本有哪些不同


SVN_CHECKOUT_DIR$ svn st

Add:
將此 檔案/目錄 新增進 svn


SVN_CHECKOUT_DIR$ svn add filename 或 svn add directory

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


SVN_CHECKOUT_DIR$ svn mv filename new_filename

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


SVN_CHECKOUT_DIR$ svn revert [file | directory]

diff:
找版本間有什麼不同


svn diff # 自動以現在檔案跟 SVN 內最新版做 diff
svn diff -r9237:9238

SVN 檔案狀態資訊:

?: 此檔案不存在 SVN 裡面
A: 此次新增的檔案
C: 此檔案已經有人改過, 合併不成功, 需要人工處理
D: 此次移除的檔案
M: 此檔案有修改過
U: 此檔案有被更新過

進階操作

建立一個 branch


svn copy http://svnserver/calc/trunk http://svnserver/calc/branches/my-calc-branch -m 'create a branch'

建立 Release Tags:


svn copy http://svnserver/calc/trunk http://svnserver/calc/tags/Release-1.0.0 -m 'create Release tags for Release 1.0.0'

合併兩個版本的檔案


svn merge -r REV1:REV2 {path/to/workingcopy}
(UNDO) svn merge -r 1234:1233 ... #還原
(MERGE)svn merge -r 1233:1234 ...
svn merge --dry-run -r 343:344 http://svn.example.com/repos/calc/trunk

有 “C” 狀態處理完後, 用 resolved 將自動產生的檔案刪除, 才能正常 commit:
svn resolved filename # 這樣子下就會把自動產生 diff 等的檔案刪除

Info:
列出現在路徑, 版本編號, 最後一次修改日期 … 等資訊


svn info

Log:
如果沒輸入參數, 預設會把所有 commit log 都列出來


svn log
svn log -l 10 # 顯示 10 筆(最新 10筆 Log)
svn log -c 100 # 顯示 revision 100 的 Log
svn log -v -c 100 # 顯示 revision 100 的詳細 Log

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

當然有還有一些SVN Client的軟體讓您可以直接透過UI操作SVN
我在WIN上都是使用 TortoiseSVN
在LINUX 我就都是直接用指令

在WIN 用烏龜是還蠻方便的~ 但烏龜讓我覺得好慢

Comments

comments

您可能也會喜歡…

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料