### 区分状态和更新
在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
- 术语表