转:svn纯java客户端SVNKit学习整理(1)

来源:互联网 发布:淘宝怎么申请原图保护 编辑:程序博客网 时间:2024/06/04 19:20

Subversion 是干什么的

前言

如果你是 Subversion 的新用户,我们建议你先去 Subversion home site 获取并阅读 Subversion 的官方文档,你可以从中学习到怎么去配置和使用 Subversion 仓库。我建议新学习的朋友先熟悉Subversion的工作原理和版本机制,然后再学习SVNKit相关的知识。SVNKit中的版本机制和工作原理和Subversion是一致的。

Subversion 是干什么的?

“这是什么,我怎么在我的工作中使用它”,这可能是新学者问自己的第一个问题。简短的说, Subversion 可以被描述为一个版本控制系统,它能从时间上跟踪文件的历史和目录的更改。所有加了版本的文件和目录都隶属于Subversion 仓库的一个树形结构(就像普通的文件系 统一样)。加了版本的文件和目录拥有版本数据属性。客户端对仓库中的树的更改在一个单独的原子的事务中提交。每一个提交操作都为全部树(包括刚刚提交的新改变的数据和之前没有改变的数据)创建一个新的快照。这样一个快照就叫作修订版 Subversion 仓库的生命从修订版 0(只有根目录存在修订版 0 )开始。当文件和目录被导入到仓库,仓库就发生了改变,新的修订版就被创建了,每一个成功的提交操作都为修订版加 1 。




Subversion 不会将仓库中文件的每一个修订版的全部内容都保留下来。对于每一个修订版 Subversion 使用智能机制来只存储该修订版被修改过的部分(即该版本与上一个版本之间的不同点)。因此, Subversion 的修订版允许你任何时候将仓库中的文件或者文件夹甚至整个仓库恢复到任何一个之前的版本(只要仓库树中第一修订版被创建了),不会丢失任何一个修订版的任何修改。每个修订版是仓库树的一个永久的快照,如果一个文件或者文件夹被添加到仓库中,那么它将不可能完全的从仓库中移除,因为它总是能在仓库中找到它的以前的被添加进来和被修改时的修订版。即使这种状况它的历史断了,并且从它被删除时的修订版开始它再也不存在于仓库中。

 

使用 Subversion 中心仓库的一种一般方案是在本地计算机上保存一份中心仓库任一子树的拷贝和从本地计算机提交修改结果到中心仓库。换句话说,客户端以某种方式修改来自中心仓库的文件或者目录,然后提交他的修改到中心仓库。本地加了版本信息的文件树就叫做工作拷贝。

 

使用场景:

Subversion 可以供以下使用:

         手动使用 Subversion 来保存他们的文件的变化的终端用户。

编程使用 Subversion 的应用程序。

 

SVNKit 是干什么的?

一般来说应用程序有两种使用 Subversion 的方法

         利用随时可以使用的 Subversion 客户端程序(比如你的计算机上的 Subversion 命令行客户端)。这种应用程序必须调用外部程序。

         利用特殊的客户端库。

 

根据这一分类, SVNKit 是一个纯 Java 的 Subversion 客户端库。

在程序中使用 Subversion 和 SVNKit

有很多在中心存储(例如 Subversion 中的中心仓库)上来保存全部文件的历史数据修改记录的不同的应用程序。Subversion 能够给这一想法提供非常实用的实现。然而,这些全部的应用程序可以划分为以下两个分类:

         * 第一类是,能非常简单的和工作拷贝的格式进行集成。这一种应用程序利用在本地机器上给目录和文件加上版本信息。

         * 另外一类是,工作拷贝格式不统一。这一类应用程序通过使用不同于文件和目录的项目来工作。跟踪项目的历史修改记录非常重要。但是工作拷贝不是这一类应用程序的实例。

  

上面的第二种应用程序使用 Subversion 中心仓库来存储他们的分等级描述的抽象模型。

SVNKit 是一个在 Java 应用程序中两种类型都使用版本控制的程序化的解决方案。也即, SVNKit 可以用来作为一个使用一般的方法(使用工作拷贝)来进行版本控制的集成的工具,也是一个在仓库访问协议层上和 Subversion中心仓库进行通信的引擎。

 

SVNKit 提供以下功能:

与Subversion仓库一起工作(例如:访问仓库中的数据)
创建一个本地仓库
在工作拷贝上进行操作
给本地数据加上版本控制
复制已存在的仓库
将仓库内容转化为适于移动设备存储的格式化的数据流
将适于移动设备存储的格式化的数据流加载到仓库
检查本地仓库


原文出自:http://xiangxji.iteye.com/blog/658949

0 0
原创粉丝点击