Java_SVN客户端开发

来源:互联网 发布:安装 windows 卡着不动 编辑:程序博客网 时间:2024/05/16 14:19

    开发环境

    1. 服务器端
    1. 客户端

    服务器与客户端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的主要结构

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

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

    3SvnOperationFactory的主要责任

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

    3.2、提供SvnOperationSvnOperationRunner的映射

    4、图示

    4.1SvnOperation结构

    计算机生成了可选文字: T"ehieroc玉了of'or'.t一ate,oft.,。.core.,cZ.IS,.operatio词甲曰O曰15竹Ioperatio动ptionsFrcorewcZS竹刃peration钾>-一orgtmatesoft.s妞atesofts,丁匕corewcZeA灿:tr。。ts钧饰date仅>一。r:tm。te,。ft,。。。re;0sVI£he。kout一,;tm。te:。fts二。。rewCZQs砚卫xP。rt〕上、十。ate:。f,:。。010w.=2Qsvnswitch二、sVn饰aateweZe曰

    4.2SvnOperationRunner结构

    计算机生成了可选文字: 妙丝OTyp1eroch萝of'or'_t一at.,oft_,。_。ore_,cZ_15村operatiod甲曰州〕r·er诬t1onR~er<V.锐励湃r。ti。心~妊T><y,tmate'oft,、,比coreweZ曰一OY名T>一org白eAs竹工。。doperati。nR~er<V,tmatesoft.5,丁1.coreT>一orgtmate:oftioter。叼.SV了1COr呢{困eAs诚四per。ti。心~er<V,T>一。r:.tm。te:。ft:。。。!由eAs湘i心~er<V,T>一。r:,。。te,。f,.svn.。。reinter白e八s诚em。teop。r。ti。n丑~er<V,T>一。r:tm。te:。ft.:,.。。);es竹田妞ep。:ToRep。:copy一or'toate:oft.:二.core.in!es诚em。te灿。t。t。一。r;.tm。te,。ft,vn.。。re.intern!es诚em。tec。t一。r;.tm。te:。ft,vn。。re.i。tern以.,C{一es们讯em。teDiff一。r'tm。te,。ft.,。coreintern公w!自只.R,m。,,nof仅11。。。,福二,一。,,,m,.,。。f,,.。n,,。

    4.3、总体结构

    计算机生成了可选文字: 云nt汀古出犯.ISvn伪,ra石onRun阶r{ab鱿ra阅‘陀百f日亡e,SvnobjectRec创”r{a比打日Ct]石附省f出犯,.翻n街姗葫0n0例训sprovi公盯恤。写厅.Ct}公曰伪姗创初旧阳n甘和洲r州}S明Opera七onSvnopera五onFactory!L_____月切口R目川油好饭m川巨甘卜伐r,尹IAbstraCts丫nc~itsvnRemO奄创阴氏O介

     

    导入

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

    请考虑

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

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

     

    总结要点

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

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

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

     

    参考资料

    1. http://svnkit.com/documentation.html
    2. http://svnkit.com/kb/
    3. http://sqljet.com
    4. http://blog.csdn.net/feiren127/article/details/7551782
    5. http://wenku.baidu.com/view/2f93208483d049649b665881.html

     

原创粉丝点击