### 目录的版本
Subversion会记录目录树的结构,不仅仅是文件的内容。这是编写Subversion替代CVS最重要的一个原因。
以下是对你这意味着什么的说明,作为一个前CVS用户:
-
**svn add**和**svn delete**现在也工作在目录上了,就像在文件上一样,还有**svn copy**和**svn move**也一样。然而,这些命令*不*会导致版本库即时的变化,相反,工作的项目只是“预定要”添加和删除,在运行**svn commit**之前没有版本库的修改。
-
目录不再是哑容器了;它们也有文件一样的修订版本号。(更准确一点,谈论“修订版本5的目录`foo/`”是正确的。)
让我们再讨论一下最后一点,目录版本化是一个困难的问题;因为我们希望允许混合修订版本的工作拷贝,有一些防止我们滥用这个模型的限制。
从理论观点,我们定义“目录`foo`的修订版本5”意味着一组目录条目和属性。现在假定我们从`foo`开始添加和删除文件,然后提交。如果说我们还有`foo`的修订版本5就是一个谎言。然而,如果说我们在提交之后增加了一位`foo`的修订版本号码,这也是一个谎言;`foo`还有一些修改我们没有得到,因为我们还没有更新。
Subversion通过在`.svn`区域偷偷的纪录添加和删除来处理这些问题,当你最后运行**svn update**,所有的账目会到版本库结算,并且目录的新修订版本号会正确设置。*因此,只有在更新之后才可以真正安全地说我们有了一个“完美的”修订版本目录。*在大多数时候,你的工作拷贝会保存“不完美的”目录修订版本。
同样的,如果你尝试提交目录的属性修改会有一个问题,通常情况下,提交应该会提高工作目录的本地修订版本号,但是再一次,这还是一个谎言,因为这个目录还没有添加和删除发生,因为还没有更新发生。*因此,在你的目录不是最新的时候不允许你提交属性修改。*
关于目录版本的更多讨论见[“修订版本混合的限制”一节](# "修订版本混合的限制")。
- 第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
- 术语表