Subversion 架构与功能详解
1. Subversion 模块化设计的优势
Subversion 的开发团队非常注重将功能合理地分配到不同的层和库中,其模块化设计带来了诸多优势。以下是一些关键的库及其功能:
| 库名称 | 功能描述 |
| ---- | ---- |
| libsvn_ra_svn | 自定义协议的仓库访问模块 |
| libsvn_repos | 仓库接口 |
| libsvn_subr | 各种有用的辅助子程序 |
| libsvn_wc | 工作副本管理库 |
| mod_authz_svn | 通过 WebDAV 访问 Subversion 仓库的 Apache 授权模块 |
| mod_dav_svn | 将 WebDAV 操作映射到 Subversion 操作的 Apache 模块 |
从开发者的角度来看,模块化设计最大的优势在于降低了复杂度。开发者能够快速构建整体架构的“大图”,相对轻松地定位特定功能的位置。
模块化的另一个好处是可以用实现相同 API 的全新库替换给定模块,而不影响代码库的其他部分。在 Subversion 中,libsvn_ra_dav、libsvn_ra_local、libsvn_ra_serf 和 libsvn_ra_svn 库都实现了相同的接口,作为 libsvn_ra 的插件。它们都与仓库层进行通信,其中 libsvn_ra_local 直接连接到仓库,另外三个则通过网络连接。libsvn_fs_base 和 libsvn_fs_fs 库也是一对以不同方式实现相同功能的库,它们都是通用 libsvn_fs 库的插件。