开发环境

  1. 服务器端
  2. 客户端

服务器与客户端SVN版本

1、服务器1.7.4,客户端版本要注意与服务器的兼容

2、<dependency conf="default" org="org.tmatesoft.svnkit" name="svnkit" rev="1.7.8"/>

建立版本库

创建

计算机生成了可选文字: l):气DFU缺nu\To护toiseSUH、为in>svnadnincreateJ:贻unTest、、epositor,

配置

计算机生成了可选文字: l):、DFU缺nv\To护toiseSUH勺〕in>editJ:墉unTest勺.eposito护夕\Conf墉unse护,e。conf

启动

计算机生成了可选文字: D:从DFU缺nu\To护toiseSUH、bin>sunserue一d一护J:\SunTest勺,eposito护夕

分清楚本地操作和远程操作

请考虑

1、是客户端先对工作副本操作这后再提交给服务器?

2、是直接操作远端服务器然后等待客户端副本更新?

3、高版本的SVNClient提交数据可以兼容低版本的服务器

4、低版本的SVNClient提交数据不兼容高版本的服务器,会抛出异常,提示升级客户端

5、有这种情况,Java应用中使用低版本的客户端,同时操作系统中使用高版本的客户端,两客户端对应的SVN服务器相同(SVN服务器的版本与Java应用程序SVN客户端版本一致),同时两客户端操纵的文件副本位置也相同。

默认高版本客户端是需要对本地副本目录进行转换才能正常识别的,当使用高版本客户端转换后就会出现低版本客户端会操纵的是高版本的工作副本,这样异常就发生了(SVN服务器会提示更新低版本的客户端)。

SVNKit#Java实现的SVN客户端工具

SVNKit提供了两套API,(High Level)高级些的API就是(Low Level API)低级别API的封装。svn客户端最终目的:

1、构造原始svn命令

2、提供Java环境下操作SVN的可复用工具

3、封装和抽象出与svn密切相关的对象结构用于辅助具体应用场景

分析SVNKit High API的主要结构

1、SvnOperation是抽象的SVN命令的父类,所有SVNKit客户端支持的svn命令都要有一个Java类与其对应

2、SvnOperationRunner负责定义各svn抽象命令的执行处理逻辑,操作SVN本地工作副本或远端仓库资源

3、SvnOperationFactory的主要责任

3.1、提供了统一的SvnOperation执行入口

3.2、提供SvnOperation与SvnOperationRunner的映射

4、图示

4.1、SvnOperation结构

java校验svn版本号 java svn_java_04

4.2、SvnOperationRunner结构

java校验svn版本号 java svn_java_05

4.3、总体结构

java校验svn版本号 java svn_java_06

导入

层级概念(SVNDepth),在导入时通过fromRecurse(true/false)来设置是否递归原目录

请考虑

1、导入文件,需要注意远端SVN地址不能为目录

2、导入文件夹,导入文件夹就涉及到层级和递归的概念

总结要点

SVN客户端的操作可分两大块一块是本地副本的操作,一块是远端服务器版本的操作。

从代码结构分析来看单纯SVN命令是不区分本地还是远程,在命令执行阶段才会区分本地或远程。

操作本地副本完成后总也得提交给远端服务器这就是常见的“你提交SVN了么?”。