本文档旨在介绍 Subversion 1.4。如果您正在运行更高版本的 Subversion,我们强烈建议您访问 https://svnbooks.subversion.org.cn/ 并查阅适合您 Subversion 版本的本手册。

使用 Subversion 进行版本控制

针对 Subversion 1.4

(编译自 r2866)

Ben Collins-Sussman

Brian W. Fitzpatrick

C. Michael Pilato

本作品采用创作共用署名许可证授权。要查看此许可证的副本,请访问 http://creativecommons.org/licenses/by/2.0/ 或致函创作共用,地址:559 Nathan Abbott Way, Stanford, California 94305, USA。

(待定)


目录

前言
序言
读者对象
如何阅读本书
本书中使用的约定
排版约定
图标
本书的组织结构
本书免费提供
致谢
来自 Ben Collins-Sussman
来自 Brian W. Fitzpatrick
来自 C. Michael Pilato
什么是 Subversion?
Subversion 的历史
Subversion 的功能
Subversion 的架构
Subversion 的组件
1. 基本概念
版本库
版本控制模型
文件共享问题
锁定-修改-解锁解决方案
复制-修改-合并解决方案
Subversion 的实际应用
Subversion 版本库 URL
工作副本
版本
工作副本如何跟踪版本库
混合版本工作副本
更新和提交是分开的
混合版本是正常的
混合版本很有用
混合版本存在限制
总结
2. 基本用法
帮助!
将数据导入版本库
svn import
推荐的版本库布局
初始检出
禁用密码缓存
以其他用户身份进行身份验证
基本工作流程
更新工作副本
修改工作副本
检查您的修改
查看您的修改概述
检查本地修改的详细信息
撤销工作修改
解决冲突(合并他人的修改)
手动合并冲突
将文件复制到工作文件
绕过:使用 svn revert
提交您的修改
检查历史记录
生成历史修改列表
检查历史修改的详细信息
检查本地修改
比较工作副本与版本库
比较版本库与版本库
浏览版本库
svn cat
svn list
获取旧的版本库快照
有时您只需要清理一下
总结
3. 高级主题
版本说明符
版本关键字
版本日期
属性
为什么要使用属性?
操作属性
属性和 Subversion 工作流程
自动属性设置
文件可移植性
文件内容类型
文件可执行性
行尾字符序列
忽略未版本化的项目
关键字替换
锁定
创建锁定
发现锁定
解除锁定和窃取锁定
锁定通信
外部定义
挂钩版本和操作版本
网络模型
请求和响应
客户端凭据缓存
4. 分支和合并
什么是分支?
使用分支
创建分支
使用分支
分支背后的关键概念
在分支之间复制修改
复制特定修改
合并背后的关键概念
合并最佳实践
手动跟踪合并
预览合并
合并冲突
注意到或忽略血统
合并和移动
常见用例
将整个分支合并到另一个分支
撤销修改
恢复已删除的项目
常见分支模式
发布分支
功能分支
遍历分支
标签
创建简单标签
创建复杂标签
分支维护
版本库布局
数据生命周期
供应商分支
一般供应商分支管理程序
svn_load_dirs.pl
总结
5. 版本库管理
定义 Subversion 版本库
版本库部署策略
规划版本库组织结构
确定版本库托管的位置和方式
选择数据存储
Berkeley DB
FSFS
创建和配置版本库
创建版本库
实现版本库钩子
Berkeley DB 配置
版本库维护
管理员工具包
svnadmin
svnlook
svndumpfilter
svnsync
Berkeley DB 实用程序
提交日志消息更正
管理磁盘空间
Subversion 如何节省磁盘空间
删除无效事务
清除未使用的 Berkeley DB 日志文件
Berkeley DB 恢复
将版本库数据迁移到其他位置
过滤版本库历史记录
版本库复制
版本库备份
总结
6. 服务器配置
概述
选择服务器配置
svnserve 服务器
通过 SSH 使用 svnserve
Apache HTTP 服务器
建议
svnserve,自定义服务器
调用服务器
作为守护进程运行 svnserve
通过 inetd 运行 svnserve
通过隧道运行 svnserve
作为 Windows 服务运行 svnserve
内置身份验证和授权
创建 “users” 文件和领域
设置访问控制
通过 SSH 隧道
SSH 配置技巧
初始设置
控制调用的命令
httpd,Apache HTTP 服务器
先决条件
基本 Apache 配置
身份验证选项
基本 HTTP 身份验证
SSL 证书管理
授权选项
全面访问控制
按目录访问控制
禁用基于路径的检查
额外的好处
版本库浏览
Apache 日志记录
其他功能
基于路径的授权
支持多种版本库访问方法
7. 自定义 Subversion 体验
运行时配置区域
配置区域布局
配置和 Windows 注册表
配置选项
服务器
配置
本地化
了解语言环境
Subversion 如何使用语言环境
使用外部差异工具
外部 diff
外部 diff3
8. 嵌入 Subversion
分层库设计
版本库层
版本库访问层
客户端层
工作副本管理区域内部
条目文件
原始副本和属性文件
使用 API
Apache 可移植运行时库
URL 和路径要求
使用除 C 和 C++ 之外的其他语言
代码示例
9. Subversion 完整参考
Subversion 命令行客户端:svn
svn 选项
svn 子命令
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 lock
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 unlock
svn update
svnadmin
svnadmin 选项
svnadmin 子命令
svnadmin create
svnadmin deltify
svnadmin dump
svnadmin help
svnadmin hotcopy
svnadmin list-dblogs
svnadmin list-unused-dblogs
svnadmin load
svnadmin lslocks
svnadmin lstxns
svnadmin recover
svnadmin rmlocks
svnadmin rmtxns
svnadmin setlog
svnadmin verify
svnlook
svnlook 选项
svnlook 子命令
svnlook author
svnlook cat
svnlook changed
svnlook date
svnlook diff
svnlook dirs-changed
svnlook help
svnlook history
svnlook info
svnlook lock
svnlook log
svnlook propget
svnlook proplist
svnlook tree
svnlook uuid
svnlook youngest
svnsync
svnsync 选项
svnsync 子命令
svnsync copy-revprops
svnsync initialize
svnsync synchronize
svnserve
svnserve 选项
svnversion
svnversion
mod_dav_svn
mod_dav_svn 配置指令
Subversion 属性
版本化属性
非版本化属性
仓库钩子
start-commit
pre-commit
post-commit
pre-revprop-change
post-revprop-change
pre-lock
post-lock
pre-unlock
post-unlock
A. Subversion 快速入门指南
安装 Subversion
高速教程
B. 适用于 CVS 用户的 Subversion
修订号现在不同了
目录版本
更多脱机操作
状态和更新之间的区别
状态
更新
分支和标签
元数据属性
冲突解决
二进制文件和翻译
版本化模块
身份验证
将仓库从 CVS 转换为 Subversion
C. WebDAV 和自动版本控制
什么是 WebDAV?
自动版本控制
客户端互操作性
独立 WebDAV 应用程序
Microsoft Office、Dreamweaver、Photoshop
Cadaver、DAV Explorer
文件浏览器 WebDAV 扩展
Microsoft Web Folders
Nautilus、Konqueror
WebDAV 文件系统实现
WebDrive、NetDrive
Mac OS X
Linux davfs2
D. 第三方工具
E. 版权
索引

图示

1. Subversion 的架构
1.1. 典型的客户端/服务器系统
1.2. 要避免的问题
1.3. 锁定-修改-解锁解决方案
1.4. 复制-修改-合并解决方案
1.5. 复制-修改-合并解决方案(续)
1.6. 仓库的文件系统
1.7. 仓库
4.1. 开发分支
4.2. 开始仓库布局
4.3. 带有新副本的仓库
4.4. 一个文件的历史记录分支
8.1. 二维的文件和目录
8.2. 版本控制时间——第三维度!

表格

1.1. 仓库访问 URL
5.1. 仓库数据存储比较
6.1. Subversion 服务器选项比较
C.1. 常见 WebDAV 客户端

示例

5.1. txn-info.sh(报告未完成的事务)
5.2. 镜像仓库的 pre-revprop-change 钩子脚本
5.3. 镜像仓库的 start-commit 钩子脚本
6.1. 匿名访问的示例配置。
6.2. 经过身份验证的访问的示例配置。
6.3. 混合身份验证/匿名访问的示例配置。
6.4. 完全禁用路径检查
7.1. 示例注册条目 (.reg) 文件。
7.2. diffwrap.sh
7.3. diffwrap.bat
7.4. diff3wrap.sh
7.5. diff3wrap.bat
8.1. 使用仓库层
8.2. 使用 Python 的仓库层
8.3. Python 状态爬虫
TortoiseSVN 官方中文版 1.14.7 发布