This text is a work in progress—highly subject to change—and may not accurately describe any released version of the Apache™ Subversion® software. Bookmarking or otherwise referring others to this page is probably not such a smart idea. Please visit http://www.svnbook.com/ for stable versions of this book.

部分 I. 初识 Subversion

目录

1. 基本概念
版本控制基础
仓库
工作副本
版本控制模型
文件共享的问题
加锁-修改-解锁 解决方案
复制-修改-合并 解决方案
Subversion 的版本控制方法
Subversion 的仓库
版本号
仓库寻址
Subversion 的工作副本
工作副本的工作原理
工作副本的基本操作
版本号混合的工作副本
小结
2. 基本用法
帮助!
往仓库中添加数据
导入文件和目录
推荐的仓库布局
名字中有什么
创建工作副本
基本工作周期
更新工作副本
修改
审查修改
查看修改的整体概述
查看修改的细节
修正错误
解决冲突
交互式地查看冲突差异
交互式地解决冲突差异
推迟解决冲突
手动地解决冲突
只使用从服务器收到的更新
使用 svn revert
提交修改
检查历史
查看历史修订的细节
查看本地修改
比较工作副本和仓库
比较仓库的版本号
生成历史修改列表
浏览仓库
显示文件的内容
显示每一行的修改属性
列出被版本控制的文件
获取老的仓库快照
有时候你需要的只是清理一下
删除工作副本
从中断中恢复
处理目录冲突
目录冲突示例
小结
3. 高级主题
版本号指示器
版本号关键字
版本号日期
限定版本号与实施版本号
属性
为什么需要属性?
操作属性
属性和 Subversion 工作流程
继承的属性
自动属性设置
Subversion 的保留属性
版本化的属性
未版本化的属性
文件的可移植性
文件内容类型
文件的可执行性
行结束标记
忽略未被版本控制的项
关键字替换
稀疏目录
创建锁
发现锁
破坏与窃取锁
锁通信
外部定义
变更列表
创建与修改变更列表
变更列表用作操作过滤器
变更列表的限制
网络模型
请求与响应
客户端证书
缓存证书
禁止密码缓存
删除已缓存的证书
命令行认证
认证小结
在没有工作副本的情况下工作
远程客户端命令行操作
使用 svnmucc
小结
4. 分支与合并
什么是分支
使用分支
创建分支
在分支上工作
分支背后的关键概念
基本合并
变更集
保持分支同步
子目录合并与子目录合并信息
重新整合分支
合并信息和预览
撤消修改
恢复已删除的文件
高级合并
精选
合并语法详解
没有合并信息的合并
关于合并冲突的更多内容
拦截修改
对合并敏感的日志与注释
关注或忽略祖先
合并与移动
禁止不支持合并跟踪的客户端
关于合并跟踪的最后一点内容
遍历分支
标签
创建简单的标签
创建复杂的标签
分支维护
仓库布局
数据的寿命
常见的分支模式
发布分支
特性分支
供方分支
通常的供方分支管理过程
来自外部仓库的供方分支
来自镜像源的供方分支
分支, 还是不分支?
小结
5. 仓库管理
仓库的定义
仓库部署策略
规划仓库的组织方式
确定仓库的托管方式和位置
仓库的访问控制
创建与配置仓库
创建仓库
实现仓库钩子
钩子脚本环境配置
钩子脚本的常见用法
搜索或自己编写钩子脚本
FSFS 配置
仓库维护
管理员工具箱
svnadmin
svnlook
svndumpfilter
svnrdump
svnsync
fsfs-reshard.py
修正提交日志消息
管理磁盘空间
Subversion 如何节约磁盘空间
删除僵死的事务
FSFS 文件系统压缩
迁移仓库数据
使用 svnadmin 迁移仓库数据
使用 svnrdump 迁移仓库数据
过滤仓库历史
仓库复制
使用 svnsync 复制仓库
使用 svnsync 进行部分复制
创建镜像的小窍门
复制小结
仓库备份
管理仓库的 UUID
移动与删除仓库
小结
6. 服务器配置
概览
选择一种服务器配置
svnserve 服务器
svnserve + SSH
Apache HTTP 服务器
建议
svnserve, 一个定制化的服务器
调用服务器
svnserve 作为守护进程
由 inetd 调用 svnserve
由 xinetd 调用 svnserve
基于隧道的 svnserve
svnserve 作为 Windows 服务
svnserve 作为 launchd 作业
内建的认证与授权
创建一个用户文件和认证域
设置访问控制
svnserve 使用 SASL
使用 SASL 进行认证
SASL 加密
SSH 隧道
SSH 配置技巧
初始化设置
控制被调用的命令
svnserve 配置参考
通用配置
Cyrus SASL 配置
httpd, Apache HTTP 服务器
先决条件
Apache 基本配置
认证选项
Basic 认证
Digest 认证
授权选项
完全访问控制
每个目录的访问控制
禁止基于路径的检查
存放在仓库内的访问权限配置文件
使用 SSL 保护网络流量
Subversion 服务器 SSL 证书配置
Subversion 客户端 SSL 证书管理
优化性能
KeepAlive
批量更新
其他好处
仓库浏览
Apache 日志
直写代理
Apache 的其他特性
Subversion Apache HTTP 服务器配置参考
mod_dav_svn 配置指令
mod_authz_svn 配置指令
基于路径的授权
基于路径的访问控制
用户组
用户别名
访问权限控制的高级特性
访问权限控制的一些陷阱
高层日志记录
服务器优化
数据缓存
网络数据压缩
支持多种仓库访问方法
7. 定制自己的 Subversion 体验
运行时配置区域
配置区域的布局
配置与 Windows 系统注册表
运行时配置选项
通用配置选项
每服务器配置
本地化
理解地区
Subversion 对本地化的支持
使用外部编辑器
使用外部差异比较与合并工具
外部差异比较工具
外部三路差异比较工具
外部合并工具
小结
8. 嵌入 Subversion
层次化的函数库设计
仓库层
仓库访问层
客户端层
使用 API
Apache 可移植运行库
函数与不透明数据
URL 和路径要求
使用除了 C 和 C++ 之外的语言
代码示例
小结