Subversion API 函数和开发思路介绍

SubVersion开发信息 
SubVersion是一个开源项目,它的财政支持来自CollabNet Inc,这是位于加州的一个软件公司。本项目欢迎程序员加入开发,鼓励您为它做点事情,无论是出点主意,还是修正Bug,或者是提炼代码。
本章是针对那些打算直接利用这个软件的源代码帮助这个软件发展的人。我们会在这里公布一些该软件的内部细节,这些技术细节对你继续开发subversion有帮助,也可以让你利用SubVersion的库写出全新的工具。
Subversion采用模块化设计,是一组C库的集合。每个库都有定义良好的接口和Purpose,而且大多数模块都处于三个主要的层之一中,这三个层分别是:存储层(Repositiry layer)、存储访问层(Repository Access layer)和客户层(Client Layer)。在学习这些层之前,先学习下表中列出的库的详细目录。为了保持一致性,这里使用它们的Unix 库名称(如:libsvc_fs , libsvn_wc, mod_dav_svn)。
表:subversion库的目录
介绍
libsvn_client
客户端程序的主接口
libsvn_delta
Tree and text differencing routines
libsvn_fs
Subversion文件系统库。
libsvn_ra
Repository Access commons and module loader
libsvn_ra_dav
WebDAV存储访问模块
libsvn_ra_local
本地存储访问模块
libsvn_ra_svn
一个私有协议存储访问模块
libsvn_repos
存储(仓库)接口
libsvn_subr
各种有用的子程序
libsvn_wc
工作版本(副本)管理器
mod_dav_svn
将WebDAV操作映射到Subversion的Apache模块
在上面的表中,单词"miscellaneous"只出现了一次是个好事情。Subversion的开发团队很严谨的让各种功能放合适的层和库中。模块化设计最大的好处是,从开发者的角度看,它不复杂。作为一个开发者,你可以很快地找到你所需要的功能的位置。下面的图表表示,Subversion库是怎样组装在一起的。
图表:Subversion的层的结构
使用模块化设计的另外一个好处是:我们可以用一个全新的库去替换一个指定的模块,在不影响其它的代码的情况下,实现相同的API。其实这种情况已经发生过了。Libsvn_ra_dav, libsvn_ra_local 和实现的是相同的接口。三个库都与存储层通信,其中Libsvn_ra_dav和libsvn_ra_svn通过网络通信,而libsvn_ra_local则是直接连接。
Subversion的客户端的设计也是高度模块化的。目前已经可以使用的客户端只是个基于命令行的程序,但是有很多第三方已经在开发GUI程序了。这些客户端都是使用着相同的API函数,对于大多数的客户端程序设计来说,libsvn_client一个库就足够了。
与存储层有关的是两个库,一个是repository库,一个是filesystem库。这些库提供了存储和那些版本控制数据的修订报告。这个层是通过存储访问层连接client层的,而且从用户的角度来看,素材来自网络的另外一端。
Subversion文件系统可以通过libsvn_fs API函数访问,这个文件系统其实是一个虚拟的文件系统,不是那种在操作系统中使用的真正的文件系统。在这里所谓的存储,不是真的创建一个文件或者目录,相反,它是使用一个数据库系统作为后台。当前使用的数据库系统是BDB。但是随着以后的开发,它将与其他的数据库系统兼容,也许还可以通过ODBC访问。
这个文件系统的API函数提供了在大多数的文件系统中能够使用的功能:你可以创建、移动文件和目录,复制和移动它们,编辑文件的内容等等。某些功
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值