本手册旨在描述 Subversion 1.1。如果您运行的是更新版本的 Subversion,我们强烈建议您访问 https://svnbook.subversion.org.cn/ 并查阅适合您 Subversion 版本的版本。

使用 Subversion 进行版本控制

适用于 Subversion 1.1

(从修订版 1337 编译的书籍)

Ben Collins-Sussman

Brian W. Fitzpatrick

C. Michael Pilato

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

(待定)


目录

前言
序言
读者对象
如何阅读本书
本书中使用的约定
排版约定
图标
本书的组织结构
Subversion 1.1 中的新功能
本书是免费的
鸣谢
来自 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
svnshell.py
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_load_dirs.pl
本地化
了解语言环境
Subversion 对语言环境的使用
Subversion 版本库 URL
8. 开发人员信息
分层库设计
版本库层
版本库访问层
RA-DAV(使用 HTTP/DAV 的版本库访问)
RA-SVN(自定义协议版本库访问)
RA-Local(直接版本库访问)
您的 RA 库在这里
客户端层
使用 API
Apache 可移植运行时库
URL 和路径要求
使用除 C 和 C++ 之外的语言
工作副本管理区域内部
Entries 文件
原始副本和属性文件
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 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 选项
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 选项
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
svnserve 选项
svnversion
svnversion
mod_dav_svn
mod_dav_svn 配置指令
A. 针对 CVS 用户的 Subversion
修订版编号现在不同了
目录版本
更多断开连接的操作
状态和更新之间的区别
分支和标签
元数据属性
冲突解决
二进制文件和翻译
版本化模块
身份验证
将版本库从 CVS 转换为 Subversion
B. 故障排除
常见问题
使用 Subversion 时遇到的问题
每次我尝试访问我的版本库时,Subversion 客户端都会挂起。
每次我尝试运行 svn 时,它都会说我的工作副本被锁定。
我收到查找或打开版本库的错误,但我确定我的版本库 URL 是正确的。
如何在 file:// URL 中指定 Windows 驱动器盘符?
我对通过网络执行 Subversion 版本库的写入操作有困难。
在 Windows XP 下,Subversion 服务器有时似乎会发送损坏的数据。
跟踪 Subversion 客户端和 Apache 服务器之间对话的最佳方法是什么?
我刚构建了发行版二进制文件,当我尝试检出 Subversion 时,我收到有关无法识别的 URL 方案的错误。
为什么 svn revert 命令需要显式目标?为什么它默认情况下不是递归的?此行为与几乎所有其他子命令不同。
当我启动 Apache 时,mod_dav_svn 会抱怨数据库版本错误,因为它找到了 db-3.X,而不是 db-4.X。
我在 RedHat 9 上收到 Function not implemented 错误,什么都不起作用。如何解决此问题?
为什么日志显示 (no author) 用于通过 Apache (ra_dav) 提交或导入的文件?
我在 Windows 上偶尔会收到访问拒绝错误。它们似乎随机发生。
在 FreeBSD 上,某些操作(尤其是 svnadmin create)有时会挂起。
我可以在 Web 浏览器中看到我的版本库,但 svn checkout 会给我一个关于 301 Moved Permanently 的错误。
我试图查看我文件的旧版本,但 svn 说路径未找到。
C. WebDAV 和自动版本控制
基本 WebDAV 概念
简单的 WebDAV
DeltaV 扩展
Subversion 和 DeltaV
将 Subversion 映射到 DeltaV
自动版本控制支持
mod_dav_lock 替代方案
自动版本控制互操作性
Win32 WebFolders
Mac OS X
Unix:Nautilus 2
Linux davfs2
D. 第三方工具
客户端和插件
语言绑定
版本库转换器
更高级别的工具
版本库浏览工具
E. 版权

图示列表

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 库的简要清单

示例列表

5.1. 使用 svnshell 导航仓库
5.2. txn-info.sh(报告未完成的交易)
6.1. 匿名访问的示例配置。
6.2. 身份验证访问的示例配置。
6.3. 混合身份验证/匿名访问的示例配置。
6.4. 完全禁用路径检查
7.1. 示例注册条目 (.reg) 文件。
8.1. 使用仓库层
8.2. 使用 Python 的仓库层
8.3. 一个简单的脚本,用于检出工作副本。
8.4. 典型 .svn/entries 文件的内容
8.5. 有效的池使用
TortoiseSVN 官方中文版 1.14.7 发布