Java批量从svn导出多个项目代码实例
近期工作中要对很多项目加相同的依赖,需要将很多项目都从svn导出,感觉一个个导太慢了,由于不会写脚本就从晚上找到svn拉代码的程序,稍作修改很快就拉完了所有代码。直接上必要代码
必要pom
org.tmatesoft.svnkit svnkit 1.10.1 org.projectlombok lombok 1.18.8
必要代码
@Slf4j publicclassSvnService{ privateSVNClientManagerclientManager; publicvoidcheckOut(finalSvnConfigconfig){ finalStringuser=config.getSourceSvnUser(); finalStringpassword=config.getSourceSvnPassword(); finalStringsourceSvn=config.getSourceSvn()+config.getSourceProject(); try{ //初始化支持svn://协议的库。必须先执行此操作。 SVNRepositoryFactoryImpl.setup(); //相关变量赋值 SVNURLrepositoryURL=SVNURL.parseURIEncoded(sourceSvn); ISVNOptionsoptions=SVNWCUtil.createDefaultOptions(true); //实例化客户端管理类 this.clientManager=SVNClientManager.newInstance( (DefaultSVNOptions)options,user,password); //要把版本库的内容checkout到的目录 FilewcDir=newFile(config.getSourceCheckOutDir()); //通过客户端管理类获得updateClient类的实例。 SVNUpdateClientupdateClient=this.clientManager.getUpdateClient(); //setsexternalsnottobeignoredduringthecheckout updateClient.setIgnoreExternals(false); //执行checkout操作,返回工作副本的版本号。 longworkingVersion=updateClient.doCheckout( repositoryURL,wcDir, SVNRevision.HEAD,SVNRevision.HEAD,SVNDepth.INFINITY, false); log.info("VERSION:{}checkoutto{}",workingVersion,wcDir); }catch(Exceptione){ log.error("SvnService.doCheckOuterror:",e); } } publicvoidupdate(finalSvnConfigconfig){ finalStringuser=config.getSourceSvnUser(); finalStringpassword=config.getSourceSvnPassword(); finalStringsourceSvn=config.getSourceSvn()+config.getSourceProject(); try{ //初始化支持svn://协议的库。必须先执行此操作。 SVNRepositoryFactoryImpl.setup(); //相关变量赋值 SVNURL.parseURIEncoded(sourceSvn); ISVNOptionsoptions=SVNWCUtil.createDefaultOptions(true); //实例化客户端管理类 this.clientManager=SVNClientManager.newInstance( (DefaultSVNOptions)options,user,password); //要更新的文件 FileupdateFile=newFile(config.getSourceCheckOutDir()); //获得updateClient的实例 SVNUpdateClientupdateClient=this.clientManager.getUpdateClient(); updateClient.setIgnoreExternals(false); //执行更新操作 longversionNum=updateClient.doUpdate(updateFile,SVNRevision.HEAD,SVNDepth.INFINITY,false,false); log.info("updatedversionis{}",versionNum); }catch(Exceptione){ log.info(e.getMessage()+"{}",e); } } publicvoidcommit(finalSvnConfigconfig){ finalStringuser=config.getSourceSvnUser(); finalStringpassword=config.getSourceSvnPassword(); finalStringsourceSvn=config.getSourceSvn()+config.getSourceProject(); try{ //初始化支持svn://协议的库。必须先执行此操作。 SVNRepositoryFactoryImpl.setup(); //相关变量赋值 SVNURL.parseURIEncoded(sourceSvn); ISVNOptionsoptions=SVNWCUtil.createDefaultOptions(true); //实例化客户端管理类 this.clientManager=SVNClientManager.newInstance( (DefaultSVNOptions)options,user,password); //要提交的文件 FilecommitFile=newFile(config.getSourceCheckOutDir()); //获取此文件的状态(是文件做了修改还是新添加的文件?) SVNStatusstatus=this.clientManager.getStatusClient().doStatus(commitFile,true); //如果此文件是新增加的则先把此文件添加到版本库,然后提交。 if(status.getContentsStatus()==SVNStatusType.STATUS_UNVERSIONED){ //把此文件增加到版本库中 this.clientManager.getWCClient().doAdd(commitFile,false,false,false,SVNDepth.INFINITY,false,false); //提交此文件 this.clientManager.getCommitClient().doCommit( newFile[]{commitFile},true,"",null,null,true,false,SVNDepth.INFINITY); System.out.println("add"); } //如果此文件不是新增加的,直接提交。 else{ this.clientManager.getCommitClient().doCommit( newFile[]{commitFile},true,"",null,null,true,false,SVNDepth.INFINITY); System.out.println("commit"); } System.out.println(status.getContentsStatus()); }catch(Exceptione){ log.error(e.getMessage()+"{}",e); } } }
其余代码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。