Subversion
权威指南
针对
Subversion
1.5(根据
r3301
编译)
Ben Collins-Sussman
Brian W. Fitzpatrick
C. Michael Pilato
ii
目录
前言
................................................................................................................................................. xi
序言
.............................................................................................................................................. xiii
1.
读者
.................................................................................................................................. xiii
2.
怎样阅读本书
................................................................................................................... xiv
3.
本书约定
.......................................................................................................................... xiv
4.
本书的结构
........................................................................................................................ xv
5.
本书是免费的
................................................................................................................... xvi
6.
致谢
................................................................................................................................. xvii
6.1.
来自
Ben Collins-Sussman ................................................................................... xvii
6.2.
来自
Brian W. Fitzpatrick ................................................................................... xviii
6.3.
来自
C. Michael Pilato ........................................................................................ xviii
7. Subversion
是什么?
..................................................................................................... xviii
7.1. Subversion
是正确的工具吗?
............................................................................. xix
7.2. Subversion
的历史
................................................................................................ xix
7.3. Subversion
的架构
................................................................................................. xx
7.4. Subversion
的组件
............................................................................................... xxii
7.5. Subversion
有什么新东西?
................................................................................ xxii
1.
基本概念
..................................................................................................................................... 1
1.1.
版本库
.............................................................................................................................. 1
1.2.
版本模型
.......................................................................................................................... 1
1.2.1.
文件共享的问题
.................................................................................................... 2
1.2.2.
“锁定-修改-解锁”方案
................................................................................... 2
1.2.3.
“拷贝-修改-合并”方案
................................................................................... 4
1.3. Subversion
实践
............................................................................................................... 6
1.3.1. Subversion
版本库的
URL .................................................................................... 6
1.3.2.
工作副本
................................................................................................................ 7
1.3.3.
修订版本
.............................................................................................................. 10
1.3.4.
工作副本怎样跟踪版本库
.................................................................................. 11
1.3.5.
混合修订版本的工作副本
.................................................................................. 12
1.4.
总结
................................................................................................................................ 13
2.
基本使用
................................................................................................................................... 14
2.1.
求助!
............................................................................................................................ 14
2.2.
导入数据到你的版本库
................................................................................................. 15
2.2.1. svn import ............................................................................................................ 15
2.2.2.
推荐的版本库布局
.............................................................................................. 16
2.3.
初始化检出
..................................................................................................................... 16
2.3.1.
禁用密码缓存
...................................................................................................... 18
2.3.2.
认证为其它用户
.................................................................................................. 19
2.4.
基本的工作循环
............................................................................................................. 19
2.4.1.
更新你的工作副本
.............................................................................................. 20
2.4.2.
修改你的工作副本
.............................................................................................. 20
2.4.3.
检查你的修改
...................................................................................................... 21
2.4.4.
取消本地修改
...................................................................................................... 25
2.4.5.
解决冲突(合并别人的修改)
................................................................................ 26
2.4.6.
提交你的修改
...................................................................................................... 32
2.5.
检验历史
......................................................................................................................... 33
Subversion
权威指南
iii
2.5.1.
产生历史修改列表
.............................................................................................. 34
2.5.2.
检查历史修改详情
.............................................................................................. 36
2.5.3.
浏览版本库
.......................................................................................................... 38
2.5.4.
获得旧的版本库快照
.......................................................................................... 39
2.6.
有时你只需要清理
......................................................................................................... 39
2.6.1.
处理你的工作副本
.............................................................................................. 39
2.6.2.
从中断中恢复
...................................................................................................... 40
2.7.
总结
................................................................................................................................ 40
3.
高级主题
................................................................................................................................... 41
3.1.
版本清单
......................................................................................................................... 41
3.1.1.
修订版本关键字
.................................................................................................. 41
3.1.2.
版本日期
.............................................................................................................. 42
3.2.
属性
................................................................................................................................ 43
3.2.1.
为什么需要属性?
.............................................................................................. 44
3.2.2.
操作属性
.............................................................................................................. 46
3.2.3.
属性和
Subversion
工作流程
.............................................................................. 48
3.2.4.
自动设置属性
...................................................................................................... 50
3.3.
文件移植性
..................................................................................................................... 50
3.3.1.
文件内容类型
...................................................................................................... 51
3.3.2.
文件的可执行性
.................................................................................................. 52
3.3.3.
行结束字符序列
.................................................................................................. 52
3.4.
忽略未版本控制的条目
................................................................................................. 53
3.5.
关键字替换
..................................................................................................................... 58
3.6.
稀疏目录
......................................................................................................................... 61
3.7.
锁定
................................................................................................................................ 65
3.7.1.
创建锁定
.............................................................................................................. 66
3.7.2.
发现锁定
.............................................................................................................. 69
3.7.3.
解除和偷窃锁定
.................................................................................................. 70
3.7.4.
锁定交流
.............................................................................................................. 72
3.8.
外部定义
......................................................................................................................... 73
3.9. Peg
和实施修订版本
...................................................................................................... 77
3.10.
修改列表
....................................................................................................................... 81
3.10.1.
创建和更新修改列表
........................................................................................ 82
3.10.2.
用修改列表作为操作过滤器
............................................................................ 84
3.10.3.
修改列表的限制
................................................................................................ 86
3.11.
网络模型
....................................................................................................................... 86
3.11.1.
请求和响应
........................................................................................................ 86
3.11.2.
客户端凭证缓存
................................................................................................ 87
3.12.
总结
.............................................................................................................................. 89
4.
分支与合并
................................................................................................................................ 91
4.1.
什么是分支?
................................................................................................................. 91
4.2.
使用分支
......................................................................................................................... 92
4.2.1.
创建分支
.............................................................................................................. 93
4.2.2.
在分支上工作
...................................................................................................... 95
4.2.3.
分支背后的关键概念
.......................................................................................... 97
4.3.
基本合并
......................................................................................................................... 97
4.3.1.
变更集
.................................................................................................................. 98
4.3.2.
保持分支同步
...................................................................................................... 98
Subversion
权威指南
iv
4.3.3.
合并信息和预览
................................................................................................ 103
4.3.4.
取消修改
............................................................................................................ 104
4.3.5.
找回删除的项目
................................................................................................ 105
4.4.
高级合并
....................................................................................................................... 107
4.4.1.
摘录合并
............................................................................................................ 107
4.4.2.
合并的语法:完整的描述
................................................................................ 110
4.4.3.
不使用合并信息的合并
.................................................................................... 111
4.4.4.
合并冲突
............................................................................................................ 111
4.4.5.
阻塞修改
............................................................................................................ 112
4.4.6.
感知合并的日志和注解
.................................................................................... 113
4.4.7.
关注还是忽视祖先
............................................................................................ 115
4.4.8.
合并和移动
........................................................................................................ 116
4.4.9.
阻塞不知道合并的客户端
................................................................................ 117
4.4.10.
合并跟踪的最终信息
...................................................................................... 117
4.5.
使用分支
....................................................................................................................... 118
4.6.
标签
.............................................................................................................................. 120
4.6.1.
建立简单标签
.................................................................................................... 120
4.6.2.
建立复杂标签
.................................................................................................... 121
4.7.
维护分支
....................................................................................................................... 122
4.7.1.
版本库布局
........................................................................................................ 122
4.7.2.
数据的生命周期
................................................................................................ 122
4.8.
常用分支模式
............................................................................................................... 123
4.8.1.
发布分支
............................................................................................................ 124
4.8.2.
特性分支
............................................................................................................ 124
4.9.
供方分支
....................................................................................................................... 125
4.9.1.
常规的供方分支管理过程
................................................................................ 126
4.9.2. svn_load_dirs.pl ................................................................................................. 128
4.10.
总结
............................................................................................................................ 129
5.
版本库管理
.............................................................................................................................. 131
5.1. Subversion
版本库的定义
............................................................................................ 131
5.2.
版本库开发策略
........................................................................................................... 132
5.2.1.
规划你的版本库结构
........................................................................................ 132
5.2.2.
决定在哪里与如何部署你的版本库
................................................................ 135
5.2.3.
选择数据存储格式
............................................................................................ 135
5.3.
创建和配置你的版本库
............................................................................................... 138
5.3.1.
创建版本库
........................................................................................................ 139
5.3.2.
实现版本库钩子
................................................................................................ 140
5.3.3. Berkeley DB
配置
............................................................................................. 141
5.4.
版本库维护
................................................................................................................... 141
5.4.1.
管理员的工具箱
................................................................................................ 142
5.4.2.
修正提交消息
.................................................................................................... 146
5.4.3.
管理磁盘空间
.................................................................................................... 146
5.4.4. Berkeley DB
恢复
............................................................................................. 149
5.4.5.
版本库数据的移植
............................................................................................ 151
5.4.6.
过滤版本库历史
................................................................................................ 155
5.4.7.
版本库复制
........................................................................................................ 158
5.4.8.
版本库备份
........................................................................................................ 165
5.4.9.
管理版本库的
UUID ......................................................................................... 167
Subversion
权威指南
v
5.5.
移动和删除版本库
....................................................................................................... 168
5.6.
总结
.............................................................................................................................. 168
6.
服务配置
................................................................................................................................. 169
6.1.
概述
.............................................................................................................................. 169
6.2.
选择一个服务器配置
................................................................................................... 170
6.2.1. svnserve
服务器
................................................................................................. 170
6.2.2. svnserve over SSH ............................................................................................. 171
6.2.3. Apache
的
HTTP
服务器
.................................................................................. 171
6.2.4.
推荐
................................................................................................................... 172
6.3. svnserve -
定制的服务器
............................................................................................. 173
6.3.1.
调用服务器
........................................................................................................ 173
6.3.2.
内置的认证和授权
............................................................................................ 175
6.3.3.
让
svnserve
使用
SASL .................................................................................... 178
6.3.4.
穿越
SSH
隧道
.................................................................................................. 180
6.3.5. SSH
配置技巧
................................................................................................... 182
6.4. httpd - Apache
的
HTTP
服务器
................................................................................. 183
6.4.1.
先决条件
............................................................................................................ 184
6.4.2.
基本的
Apache
配置
......................................................................................... 184
6.4.3.
认证选项
............................................................................................................ 186
6.4.4.
授权选项
............................................................................................................ 190
6.4.5.
额外的糖果
........................................................................................................ 194
6.5.
基于路径的授权
........................................................................................................... 201
6.6.
支持多种版本库访问方法
........................................................................................... 205
7.
定制你的
Subversion
体验
..................................................................................................... 208
7.1.
运行配置区
................................................................................................................... 208
7.1.1.
配置区布局
........................................................................................................ 208
7.1.2.
配置和
Windows
注册表
.................................................................................. 209
7.1.3.
配置选项
............................................................................................................ 211
7.2.
本地化
.......................................................................................................................... 215
7.2.1.
理解区域设置
.................................................................................................... 215
7.2.2. Subversion
对区域设置的使用
......................................................................... 216
7.3.
使用外置编辑器
........................................................................................................... 217
7.4.
使用外置比较与合并工具
........................................................................................... 218
7.4.1.
外置
diff ............................................................................................................. 219
7.4.2.
外置
diff3 ........................................................................................................... 220
7.5.
总结
.............................................................................................................................. 222
8.
嵌入
Subversion ...................................................................................................................... 223
8.1.
分层的库设计
............................................................................................................... 223
8.1.1.
版本库层
............................................................................................................ 224
8.1.2.
版本库访问层
.................................................................................................... 228
8.1.3.
客户端层
............................................................................................................ 229
8.2.
进入工作副本的管理区
............................................................................................... 230
8.2.1.
条目文件
............................................................................................................ 230
8.2.2.
原始副本和属性文件
........................................................................................ 231
8.3.
使用
API ....................................................................................................................... 231
8.3.1. Apache
可移植运行库
....................................................................................... 232
8.3.2. URL
和路径需求
............................................................................................... 233
8.3.3.
使用
C
和
C++
以外的语言
............................................................................. 233