锁定-修改-解锁
复制-修改-合并
全面性的修訂版號
不同於許多其它的版本控制系統, Subversion 的修訂版號是對整個樹有效, 而不僅只於個別的檔案. 每一個修訂版號都可選取整個樹, 它對應到某個更動送交之後的特定狀態的檔案庫. 另一個思考的方式, 就是版號 N 表示是第 N 次送交之後的檔案庫的檔案系統狀態. Subversion 使用者說 ``foo.c 的修訂 5 版'' 時, 實際上的意義是 ``出現在修訂 5 版的 foo.c''. 請注意, 基本上一個檔案的修訂 N 與 M 版並不見得是不同的! 由於 CVS 使用的是檔案自各的修訂版號, CVS 使用者可以先看看附錄 A, "對 CVS 使用者介紹 SVN", 以了解更多的細節.
工作複本並不見得一定會符合檔案庫某一特定的修訂版.因为你没有在提交时不会对私有的工作空间和repository做同步。(参见手册的阐述。)这是Mixed Revisions的一种情况。
working revision:what revision your working file is based on 。
Unchanged, and current
Locally changed, and current
Unchanged, and out-of-date
Locally changed, and out-of-date
Mixed Revisions
几个关键的修订版本
#Note
# PREV, BASE, and COMMITTED can be used to refer to local paths, but not to URLs.
Base:每次更新后存放于.svn/text-base的原始未改动版本(pristine copy)。
Head:檔案庫內的最新版本
一個物件距 BASE 修訂版之前 (包含), 最近一次修改的修訂版.
最近一次修改的修訂版的 前一個 修訂版. (技術上來講, 就是 COMMITTED - 1.)
Subversion 可接受相當多的日期格式— 只要記得將有空格的日期以引號包起來就好.{“10 days ago“}
請記住 Subversion 會找出離你指定日期 最近的檔案庫修訂版.
Note
雖然你的工作複本 “就只是跟其它在系統上的目錄與檔案的集合沒有兩樣”, 但是你要重新擺放工作複本裡的東西的話, 你還是得讓 Subversion 知道. 如果你要複製或移動工作複本中的某個項目, 你應該使用 svn copy 或 svn move, 而非作業系統所提供的複製與移動的指令. 本章稍後會再討論到這些指令.
-
U foo
-
檔案 foo 會被更新 (Update) (自伺服器取得更動).
A foo
-
檔案或目錄 foo 會被新增 (Add) 到工作目錄中.
D foo
-
檔案或目錄 foo 會自工作目錄刪除 (Delete).
R foo
-
工作複本的檔案或目錄 foo 被取代 (Replace); 也就是說, foo 被刪除, 然後新增同一名稱的新項目. 雖然它們的名稱是相同的, 但是檔案庫會認為它們是不同的, 而且有著不同的歷史進程.
G foo
-
檔案 foo 自檔案庫取得新的更動, 但是本地複本的檔案含有你的更動. 不過這些更動並沒有重疊的部份, 所以 Subversion 可以毫無困難地合併 (merGe) 檔案庫的更動.
C foo
-
檔案 foo 自伺服器收到衝突的 (Conflict) 更動. 從伺服器來的更動, 與你對該檔案的更動有重疊的部份, 不過不必太驚慌失措. 衝突必須由人類 (也就是你) 來解決; 我們在本章稍後會討論這個狀況.