本文档旨在描述 Subversion 1.2。如果您正在运行更新版本的 Subversion,我们强烈建议您访问 http://svnbooks.subversion.org.cn/ 并查阅适合您 Subversion 版本的本书版本。

使用 Subversion 进行版本控制

适用于 Subversion 1.2

(本书编译自修订版 2147)

Ben Collins-Sussman

Brian W. Fitzpatrick

C. Michael Pilato

本作品根据知识共享署名许可协议进行许可。要查看此许可协议的副本,请访问 http://creativecommons.org/licenses/by/2.0/ 或向知识共享组织发送信函,地址为:美国加利福尼亚州斯坦福市内森·阿博特路 559 号。

(待定)


目录

前言
序言
目标读者
如何阅读本书
本书中使用的约定
排版约定
图标
本书的组织结构
本书免费
致谢
来自 Ben Collins-Sussman
来自 Brian W. Fitzpatrick
来自 C. Michael Pilato
1. 简介
什么是 Subversion?
Subversion 的历史
Subversion 的特性
Subversion 的架构
安装 Subversion
Subversion 的组件
快速入门
2. 基本概念
版本库
版本控制模型
文件共享问题
锁定-修改-解锁解决方案
复制-修改-合并解决方案
Subversion 在行动
工作副本
修订版
工作副本如何跟踪版本库
混合修订版工作副本
更新和提交是分开的
混合修订版是正常的
混合修订版很有用
混合修订版有局限性
总结
3. 导览
帮助!
导入
修订版:编号、关键字和日期,哦我的天!
修订版编号
修订版关键字
修订版日期
首次检出
基本工作流程
更新您的工作副本
对您的工作副本进行更改
检查您的更改
svn status
svn diff
svn revert
解决冲突(合并他人的更改)
手动合并冲突
将文件复制到您的工作文件
放弃:使用 svn revert
提交您的更改
检查历史记录
svn log
svn diff
检查本地更改
比较工作副本与版本库
比较版本库与版本库
svn cat
svn list
关于历史记录的最后一句话
其他有用命令
svn cleanup
svn import
总结
4. 分支和合并
什么是分支?
使用分支
创建分支
使用您的分支
分支背后的关键概念
在分支之间复制更改
复制特定更改
合并背后的关键概念
合并最佳实践
手动跟踪合并
预览合并
合并冲突
注意或忽略血统
常见用例
将整个分支合并到另一个分支
撤消更改
恢复已删除的项目
常见的分支模式
发布分支
特性分支
切换工作副本
标签
创建简单标签
创建复杂标签
分支维护
版本库布局
数据生命周期
总结
5. 版本库管理
版本库基础知识
了解事务和修订版
未版本控制的属性
版本库数据存储
Berkeley DB
FSFS
版本库创建和配置
钩子脚本
Berkeley DB 配置
版本库维护
管理员工具包
svnlook
svnadmin
svndumpfilter
Berkeley DB 实用程序
版本库清理
管理磁盘空间
版本库恢复
迁移版本库
版本库备份
添加项目
选择版本库布局
创建布局和导入初始数据
总结
6. 服务器配置
概述
网络模型
请求和响应
客户端凭据缓存
svnserve,自定义服务器
调用服务器
内置身份验证和授权
创建“users”文件和域
设置访问控制
SSH 身份验证和授权
SSH 配置技巧
初始设置
控制调用的命令
httpd,Apache HTTP 服务器
先决条件
基本 Apache 配置
身份验证选项
基本 HTTP 身份验证
SSL 证书管理
授权选项
全面访问控制
按目录访问控制
禁用基于路径的检查
额外的好东西
版本库浏览
其他功能
支持多种版本库访问方法
7. 高级主题
运行时配置区域
配置区域布局
配置和 Windows 注册表
配置选项
服务器
配置
属性
为什么需要属性?
操作属性
特殊属性
svn:executable
svn:mime-type
svn:ignore
svn:keywords
svn:eol-style
svn:externals
svn:special
svn:needs-lock
自动属性设置
锁定
创建锁
发现锁
破坏和窃取锁
锁通信
挂钩和操作修订版
外部定义
供应商分支
一般的供应商分支管理流程
svn_load_dirs.pl
本地化
了解区域设置
Subversion 的区域设置使用情况
使用外部差异工具
外部 diff
外部 diff3
Subversion 版本库 URL
8. 开发者信息
分层库设计
版本库层
版本库访问层
RA-DAV(使用 HTTP/DAV 的版本库访问)
RA-SVN(自定义协议版本库访问)
RA-Local(直接版本库访问)
您的 RA 库在此
客户端层
使用 API
Apache 可移植运行时库
URL 和路径要求
使用除 C 和 C++ 之外的语言
工作副本管理区域内部
条目文件
原始副本和属性文件
WebDAV
使用内存池进行编程
为 Subversion 做贡献
加入社区
获取源代码
熟悉社区政策
进行并测试您的更改
捐赠您的更改
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
svnserve
svnserve 开关
svnversion
svnversion
mod_dav_svn
mod_dav_svn 配置指令
Subversion 属性
Subversion 定义的属性
A. 针对 CVS 用户的 Subversion
修订版本号现在不同了
目录版本
更多断开连接的操作
状态和更新之间的区别
状态
更新
分支和标签
元数据属性
冲突解决
二进制文件和转换
版本化的模块
身份验证
将存储库从 CVS 转换为 Subversion
B. WebDAV 和自动版本控制
基本的 WebDAV 概念
原始 WebDAV
DeltaV 扩展
Subversion 和 DeltaV
自动版本控制
客户端互操作性
独立 WebDAV 应用程序
Microsoft Office、Dreamweaver、Photoshop
Cadaver、DAV Explorer
文件资源管理器 WebDAV 扩展
Microsoft Web 文件夹
Nautilus、Konqueror
WebDAV 文件系统实现
WebDrive、NetDrive
Mac OS X
Linux davfs2
C. 第三方工具
D. 版权

图示列表

1.1. Subversion 的架构
2.1. 典型的客户端/服务器系统
2.2. 要避免的问题
2.3. 锁定-修改-解锁解决方案
2.4. 复制-修改-合并解决方案
2.5. 复制-修改-合并解决方案(续)
2.6. 存储库的文件系统
2.7. 存储库
4.1. 开发分支
4.2. 起始存储库布局
4.3. 带有新副本的存储库
4.4. 一个文件历史的分支
8.1. 二维文件和目录
8.2. 版本控制时间——第三维!

表格列表

2.1. 存储库访问 URL
5.1. 存储库数据存储比较
6.1. 网络服务器比较
8.1. Subversion 库简要清单
B.1. 常见的 WebDAV 客户端

示例列表

5.1. txn-info.sh(报告未完成的事务)
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 状态爬虫
8.4. 典型 .svn/entries 文件的内容
8.5. 有效的池使用
TortoiseSVN 官方中文版 1.14.7 发布