`
xiangxji
  • 浏览: 57524 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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

    博客分类:
  • java
阅读更多

 

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

 

by xiangxji@gmail.com 2010-05-04 , Revised by xiangxji@gmail.com 2010-05-28 未完待续……

 

 

 

  • 大小: 18.2 KB
2
1
分享到:
评论
7 楼 liang890513 2015-05-15  
如果本地没有安装SVNclient 是不是就不能使用SVNkit进行操作 因为我在项目在window上就可以 部署到linux上以后就不好使了 代码什么的都一样 不知道是不是linux上没有安装SVNclient的原因
6 楼 lonfiy 2014-05-16  
jeremyking 写道
请问如何获得所有本地修改(包括新增)的文件列表?

请问,我用svn://localhost形式访问,总是访问被拒绝,这是什么原因?
5 楼 cjb_666888 2012-05-22  
haohaodigua 写道
请问各位仁兄。
我现在有个麻烦事儿谁能帮我出点主意。
client ---> server(use svnkit) ---> svnserver

请问我在client端修改了本地的文件后,怎么样能在远程的server端利用svnkit的commit方法提交到远程的svnserver???

现在考虑,本地的文件直接以字节流的方式传输到server端。 然后server端进行commit, 问题有以下。

1、 svnkit是否有支持流提交的方法。
2、 client 端需要将本地的.svn文件也一并提交过去用于svnserver对working-copy的验证。怎么传呢? 什么方式最好??

希望高人点评。 拜托!
也可以发我邮箱 haohaodigua@163.com
谢谢~~~~

请问下,SVN*Client与ISVNEditor的区别?(如,SVNCommitClient与用SVNRepository.getCommitEditor,进行增、删、改操作)
4 楼 haohaodigua 2012-02-06  
请问各位仁兄。
我现在有个麻烦事儿谁能帮我出点主意。
client ---> server(use svnkit) ---> svnserver

请问我在client端修改了本地的文件后,怎么样能在远程的server端利用svnkit的commit方法提交到远程的svnserver???

现在考虑,本地的文件直接以字节流的方式传输到server端。 然后server端进行commit, 问题有以下。

1、 svnkit是否有支持流提交的方法。
2、 client 端需要将本地的.svn文件也一并提交过去用于svnserver对working-copy的验证。怎么传呢? 什么方式最好??

希望高人点评。 拜托!
也可以发我邮箱 haohaodigua@163.com
谢谢~~~~
3 楼 haohaodigua 2012-02-06  
jeremyking 写道
请问如何获得所有本地修改(包括新增)的文件列表?


SVNStatusClient  doStatus 获取本地所有文件状态。

2 楼 jeremyking 2011-11-30  
请问如何获得所有本地修改(包括新增)的文件列表?
1 楼 bbsskyhorse 2010-07-07  
楼主:
    谢谢你的指导!
    我本来的疑惑就是,单位里的一个项目,需要svnkit的java代码来做svn库,里面的有些文件可能会很大,比如10G左右的,被删除的时候,如果不删除本身,这样很占硬盘空间,留下了10G的垃圾内容,很无奈!
    看了你的这篇文章,感觉不太可能完成真正的删除了,看来只有调查下其他的办法解决了,感觉这是个subversion里的一个不太理性的地方!

相关推荐

Global site tag (gtag.js) - Google Analytics