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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。