使用SVNKit与ANT导出SVN版本差异的列表

上传人:公**** 文档编号:478355038 上传时间:2023-10-21 格式:DOCX 页数:7 大小:350.61KB
返回 下载 相关 举报
使用SVNKit与ANT导出SVN版本差异的列表_第1页
第1页 / 共7页
使用SVNKit与ANT导出SVN版本差异的列表_第2页
第2页 / 共7页
使用SVNKit与ANT导出SVN版本差异的列表_第3页
第3页 / 共7页
使用SVNKit与ANT导出SVN版本差异的列表_第4页
第4页 / 共7页
使用SVNKit与ANT导出SVN版本差异的列表_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《使用SVNKit与ANT导出SVN版本差异的列表》由会员分享,可在线阅读,更多相关《使用SVNKit与ANT导出SVN版本差异的列表(7页珍藏版)》请在金锄头文库上搜索。

1、使用SVNKit与ANT导出SVN版本差异的列表现在 SVN 用的越来越多,很多时候,经常面临这样的问题,怎么才能够知道 2 个不同 的版本之间的差异。如果使用TortoiseSVN,其实也好办。首先打开一个项目目录,选择一个目录,单击右键,再选择“show log”。再选择两个不同的版本(高亮),点击右键“ compare revisions”:这样就得到了两个版本之间的差异文件列表:EIEISht ip :/19 2.1S3.旳.斗?/wn/r竿Cir 口忙匚忆阻日匚耳王出佔口住D %55%96BE0 %E5中詬匚3口口住5 %l andFie毘can ffe/dbtaol.xnilWco

2、nfiQpbylb/svn/sjrClieritAGaptef .J=icanfiQ.itepbyfb:5vns!/na-/flhl.ia,conl:fciideplc.db!s,-.,ri;,:ii&acl.;ai11 cari lia/depbyl b.svn/jra/isrs oon屯阳6口耐也典1准vriki 1 Jara canfiaept-yl bsvn a-t-jitE/- hsv.jar圏oon电此ieploylib品,仃曲由也i-jEi加i .jara canfig.itephYl bsv n gvnkit-di.jarW1 confio/repby prop-res爲 cn

3、n figlepbY .xmlW1 Bnfi&trMte .propertire囱 srqhian力吕甬伽口诈阳i水srnelfniBstB/mgTypescr pt.ja/a国 src/niflinfl/net.sj teA/flOfitnirulfer/JirWaFho.xShdreFddsrCtrl Jr/g二 j 可口加启町力耳甬 jrimgjtE 抑师川萌诂旧師珀bonjklevjirjitEMafO-ganiEmtmlaFLdim .xml=i srcjrann 曲、gn 亡乜戢亡止请出apHoi口 ankntionNie漓,仙觇山占仔mitonHhi-hsiew .xrdebCa

4、nTent/jspj ts/aPjteycalldley-ileJpciad/Ep百 WebCa nts 匕怙pj;teh?ad呛iteY怙 FRIu/RIeUp sd. swfhi如果需要导出,那么选择文件,再右键单击:Diffe-e仃cm behseenhtip:L9 2. lea .4=1,耳幵制 1片即口 jjgt艸训%sc 临ao喘andFitETpsihsFiehtn 讲 19 2.168.书,vnCDDojeztsV.-af.e %9C 吒刖吒 取朋%EC 吒E%=*1*1.到*1.*1.c on fig/drptov_Wver .will snFWdbkmlxjrd ajnfi

5、adepbib/svn/svndiEntAdapber .jar CDnfig/depbvIibfevn/svnjaYahl.TDr CDnRgdeptDylib/Evn/lTiksdiiar imnfigdeploylib/Evn/ina .jar a5nfigifdepfoylibjrEvn/3vnkrt.jar CDnfigfdeptoib/E vn/arit-jiHcwhEvn Jar asnfigdeptolb/Evnvrkit-javBH .Jar conligF血 ptayllbi 何 n 和nkrt-di.冋 CDfifig/depta. pfopertle画匡匡111因coq

6、HgCTcotc-pfoperttsDjnpare revisionsQ.L:ajne revisionEwqhiainva/nEt/jitKih/wapargarizBsccnain.afva/nEt/jitE/whfwaF/argarizBSire list o selected files Is.WebCpnbenViBPjiibe/waF/iibeWaffile/FiI ebCcntenlEpjjite/wafjiiteyVaiFile/FieUpfoad. swfC?pr seLection toE:pDft selectior!JU这样就得到差异文件了。不过我们是写程序的,用的最多

7、是Eclipse,窗口切换来去的,多麻烦。还有没有更好的 办法呢。回答是有的。在这里我们要非常感谢SVNKIT这样一个工具包。SVNKIT是一个纯JAVA 的SVN API。Eclipse的SVN插件正是基于这个API的。先简单介绍一下SVNKITo这个东西基本上是全能的,支持这样一些特性 支持 http(s), svn, svn(+ssh)以及 file 协议访问 SVN 库 支持工作拷贝的全部操作 支持仓库的管理操作:创建、装载、导出 没有安装SVN的环境也可以用好啊,这正是我们想要的。怎么做呢?从SVNKIT API来看,它提供了一组Client接口的 API。通过这些API我们可以操作

8、工作拷贝,获得仓库版本的信息。为了比较版本之间的差异, 我们会使用到SVNDiffClient,为了单独Checkout差异文件,我们会使用到SVNUpdateClient, 为了得到差异版本的提交日志,我们会使用到SVNLogClient。开工。首先要连接到 SVN 库。/初始化DAVRepositoryFactory. setup ();/仓库路径this .branchURL = SVNURL. parseURIEncoded (branchURL);this.username = username;this.password = password;this.startingRevisi

9、on =SVNRevision. create (startingRevision);this.endingRevision = SVNRevision. create(endingRevision); /仓库访问身份认证this.authManagerSVNWCUtil. createDefaultAuthenticationManager (this.username , this.password);然后就是取差异列表。SVN的Client接口提供有回调句柄,回调句柄非常的有用。我们 可以实现 ISVNDiffStatusHandler 接口,进步的处理差异,看看哪个差异是我们需要保留的

10、。 在这里,我们认为 NodeKind 必须是文件类型的,而且是新增的或者修改的,那就放入差异 列表。ImplISVNDiffStatusHandler handler = newImplISVNDiffStatusHandler(changes);diffClient.doDiffStatus( this.branchURL ,this.startingRevision , this.branchURL , this.endingRevision , svnDepth, false, handler);/省略一些代码public void handleDiffStatus(SVNDiffSt

11、atus status) throws SVNException if (status.getKind() = SVNNodeKind. FILE &(status.getModificationType() = SVNStatusType. STATUS_ADDED | status.getModificationType() = SVNStatusType. STATUS_MODIFIED ) changes.add(status);提取好差异列表,那么就可以根据差异列表进行Checkout 了。SVNUpdateClient updateClient = new SVNUpdateCli

12、ent( authManager ,SVNWCUtil. createDefaultOptions (true);Changes = getChangeList();for (int idx = 0; idx changes.size(); idx+) SVNDiffStatus change = (SVNDiffStatus) changes.get(idx);File destination = new File(destinationDirectory + + change.getPath();updateClient.doExport(change.getURL(), destinat

13、ion, this.endingRevision , this.endingRevision , null, true,SVNDepth.getInfinityOrEmptyDepth (true);这样就基本完成了我们的差异文件的获取。使用SVNLogClient获得日志信息的方法跟处 理SVNDiffer比较类似,也需要一个回调句柄。private static class ImplISVNLogHandler implements ISVNLogEntryHandler private StringBuffer sb;public ImplISVNLogHandler(StringBuf

14、fer sb) this . sb = sb;public void handleLogEntry(SVNLogEntry logEntry)throws SVNException sb.append(+ t);sb.append(Revision: + logEntry.getRevision() +t);sb.append(logEntry.getDate().toString() +t);sb.append(logEntry.getAuthor().toString() +t);sb.append(+ t n);sb.append(logEntry.getMessage() +: + n);sb.append(n);/拿至 U chagePathsMap changedPaths = logEntry.getChangedPaths();/循环Path路径,放入String Buffer,供写文件使用for (Iterator changedPathsIter =changedPaths.keySet().iterator(); changedPathsIter.hasNext();) sb.append(String)changedPathsIter.next() +n);sb.append(n n);测试一下,我们的程序,这正是我们想要得输出结果。af FI匚Menzt

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 机械/制造/汽车 > 电气技术

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号