### 區分狀態和更新
在Subversion,我們已經設法抹去**cvs status**和**cvs update**之間的混亂。
**cvs status**命令有兩個目的:第一,顯示用戶在工作拷貝的所有本地修改,第二,顯示給用戶哪些文件是最新的。很不幸,因為CVS難以閱讀的狀態輸出,許多CVS用戶并沒有充分利用這個命令的好處。相反,他們慢慢習慣運行**cvs update**或**cvs update -n**來快速查看區別,如果用戶忘記使用`-n`選項,副作用就是將還沒有準備好處理的版本庫修改合并到工作拷貝。
對于Subversion,我們通過修改**svn status**的輸出使之同時滿足閱讀和解析的需要來努力消除這種混亂,同樣,**svn update**只會打印將要更新的文件信息,而*不是*本地修改。
**svn status**打印所有本地修改的文件,缺省情況下,不會聯系版本庫,然而這個命令接受一些選項,如下是一些最常用的:
`-u`
聯系版本庫來確定,然后顯示,過時的信息。
`-v`
顯示*所有*版本控制之下的條目。
`-N`
非遞歸運行(不傳遞到子目錄)。
**status**命令有兩種輸出格式,缺省是“簡短”格式,本地修改看起來是這樣:
~~~
% svn status
M ./foo.c
M ./bar/baz.c
~~~
如果你指定`--show-updates`(`-u`),輸出會使用比較長的格式:
~~~
% svn status -u
M 1047 ./foo.c
* 1045 ./faces.html
* - ./bloo.png
M 1050 ./bar/baz.c
Status against revision: 1066
~~~
在這個例子里,有兩個新列,如果文件或目錄已經過期了,第二列會顯示星號。第三列顯示工作拷貝項目的修訂版本號,在上面的例子里,星號表示`faces.html`會在更新時更新,而`bloo.png`是在版本庫新加的文件。(`bloo.png`前面的`-`表示它不曾存在與工作拷貝。)
最后,你會想看一個常見狀態碼的快速總結:
~~~
A 資源預定要添加
D 資源預定要刪除
M 資源有本地修改
C 資源發生沖突(修改不能完全在版本庫和
工作拷貝之間合并)
X 資源在工作拷貝之外(來自其他版本庫,
見“
~~~
svn:externals
~~~
”一節)
資源不在版本控制之下
! 資源丟失或者不完整(被Subversion以外的工具刪除)
~~~
Subversion合并了CVS的`P`和`U`代碼為`U`,當一個合并或沖突發生,Subversion只會簡單得打印`G`或`C`,而不是一段完整的描述語句。
關于**svn status**的詳細討論見[“**svn status**”一節]( "svn status")。
- 第1章介紹
- Subversion的歷史
- Subversion的特性
- Subversion的架構
- 安裝Subversion
- Subversion的組件
- 快速入門
- 第2章基本概念
- 版本模型
- Subversion實戰
- 摘要
- 第3章指導教程
- 導入
- 修訂版本: 號碼、關鍵字和日期,噢,我的!
- 初始化的Checkout
- 基本的工作周期
- 檢驗歷史
- 其他有用的命令
- 摘要
- 第4章分支與合并
- 使用分支
- 在分支間拷貝修改
- 常見用例
- 轉換工作拷貝
- 標簽
- 分支維護
- 摘要
- 第5章版本庫管理
- 版本庫的創建和配置
- 版本庫維護
- 添加項目
- 摘要
- 第6章配置服務器
- 網絡模型
- svnserve,一個自定義的服務器
- httpd,Apache的HTTP服務器
- 支持多種版本庫訪問方法
- 第7章高級主題
- 屬性
- Peg和實施修訂版本
- 外部定義
- 賣主分支
- 本地化
- Subversion版本庫URL
- 第8章開發者信息
- 使用API
- 進入工作拷貝的管理區
- WebDAV
- 使用內存池編程
- 為Subversion做貢獻
- 第9章Subversion完全參考
- svn add
- svn blame
- svn cat
- svn checkout
- svn cleanup
- svn commit
- svn copy
- svn delete
- svn diff
- svn export
- svn help
- svn import
- svn info
- svn list
- svn log
- svn merge
- svn mkdir
- svn move
- svn propdel
- svn propedit
- svn propget
- svn proplist
- svn propset
- svn resolved
- svn revert
- svn status
- svn switch
- svn update
- svnadmin
- svnadmin create
- svnadmin deltify
- svnadmin dump
- svnadmin help
- svnadmin hotcopy
- svnadmin list-dblogs
- svnadmin list-unused-dblogs
- svnadmin load
- svnadmin lstxns
- svnadmin recover
- svnadmin rmtxns
- svnadmin setlog
- svnadmin verify
- svnlook
- svnlook author
- svnlook cat
- svnlook changed
- svnlook date
- svnlook diff
- svnlook dirs-changed
- svnlook help
- svnlook history
- svnlook info
- svnlook log
- svnlook propget
- svnlook proplist
- svnlook tree
- svnlook uuid
- svnlook youngest
- svnserve
- svnversion
- mod_dav_svn Configuration Directives
- 附錄A.Subversion對于CVS用戶
- 目錄的版本
- 更多離線操作
- 區分狀態和更新
- 分支和標簽
- 元數據屬性
- 沖突解決
- 二進制文件和轉化
- 版本化的模塊
- 認證
- 轉化CVS版本庫到Subversion
- 附錄C.WebDAV和自動版本化
- 自動版本化交互性
- Subversion和DeltaV
- 術語表