热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

Java批量从svn导出多个项目代码实例

这篇文章主要介绍了java批量从svn导出多个项目代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

近期工作中要对很多项目加相同的依赖,需要将很多项目都从svn导出,感觉一个个导太慢了,由于不会写脚本就从晚上找到svn拉代码的程序,稍作修改很快就拉完了所有代码。直接上必要代码

必要pom


 org.tmatesoft.svnkit
 svnkit
 1.10.1

 

 org.projectlombok
 lombok
 1.18.8

必要代码

@Slf4j
public class SvnService {
  private SVNClientManager clientManager;
 
  public void checkOut(final SvnConfig config) {
    final String user = config.getSourceSvnUser();
    final String password = config.getSourceSvnPassword();
    final String sourceSvn = config.getSourceSvn() + config.getSourceProject();
    try {
      //初始化支持svn://协议的库。 必须先执行此操作。
      SVNRepositoryFactoryImpl.setup();
 
      //相关变量赋值
      SVNURL repositoryURL = SVNURL.parseURIEncoded(sourceSvn);
      ISVNOptions optiOns= SVNWCUtil.createDefaultOptions(true);
      //实例化客户端管理类
      this.clientManager = SVNClientManager.newInstance(
          (DefaultSVNOptions) options, user, password);
      //要把版本库的内容check out到的目录
      File wcDir = new File(config.getSourceCheckOutDir());
      //通过客户端管理类获得updateClient类的实例。
      SVNUpdateClient updateClient = this.clientManager.getUpdateClient();
      // sets externals not to be ignored during the checkout
      updateClient.setIgnoreExternals(false);
      //执行check out操作,返回工作副本的版本号。
      long workingVersion = updateClient.doCheckout(
          repositoryURL, wcDir,
          SVNRevision.HEAD, SVNRevision.HEAD, SVNDepth.INFINITY,
          false);
 
      log.info("VERSION:{} check out to {}", workingVersion, wcDir);
    } catch (Exception e) {
      log.error("SvnService.doCheckOut error: ", e);
    }
  }
 
  public void update(final SvnConfig config) {
    final String user = config.getSourceSvnUser();
    final String password = config.getSourceSvnPassword();
    final String sourceSvn = config.getSourceSvn() + config.getSourceProject();
    try {
      //初始化支持svn://协议的库。 必须先执行此操作。
      SVNRepositoryFactoryImpl.setup();
      //相关变量赋值
      SVNURL.parseURIEncoded(sourceSvn);
      ISVNOptions optiOns= SVNWCUtil.createDefaultOptions(true);
      //实例化客户端管理类
      this.clientManager = SVNClientManager.newInstance(
          (DefaultSVNOptions) options, user, password);
 
      //要更新的文件
      File updateFile = new File(config.getSourceCheckOutDir());
      //获得updateClient的实例
      SVNUpdateClient updateClient = this.clientManager.getUpdateClient();
      updateClient.setIgnoreExternals(false);
      //执行更新操作
      long versiOnNum= updateClient.doUpdate(updateFile, SVNRevision.HEAD, SVNDepth.INFINITY, false, false);
      log.info("updated version is {}", versionNum);
    } catch (Exception e) {
      log.info(e.getMessage() + "{}", e);
    }
  }
 
  public void commit(final SvnConfig config) {
    final String user = config.getSourceSvnUser();
    final String password = config.getSourceSvnPassword();
    final String sourceSvn = config.getSourceSvn() + config.getSourceProject();
    try {
      //初始化支持svn://协议的库。 必须先执行此操作。
      SVNRepositoryFactoryImpl.setup();
      //相关变量赋值
      SVNURL.parseURIEncoded(sourceSvn);
      ISVNOptions optiOns= SVNWCUtil.createDefaultOptions(true);
      //实例化客户端管理类
      this.clientManager = SVNClientManager.newInstance(
          (DefaultSVNOptions) options, user, password);
      //要提交的文件
      File commitFile = new File(config.getSourceCheckOutDir());
 
      //获取此文件的状态(是文件做了修改还是新添加的文件?)
 
      SVNStatus status = 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(
            new File[]{commitFile}, true, "", null, null, true, false, SVNDepth.INFINITY);
        System.out.println("add");
      }
 
      //如果此文件不是新增加的,直接提交。
      else {
        this.clientManager.getCommitClient().doCommit(
            new File[]{commitFile}, true, "", null, null, true, false, SVNDepth.INFINITY);
        System.out.println("commit");
 
      }
 
      System.out.println(status.getContentsStatus());
    } catch (Exception e) {
      log.error(e.getMessage() + "{}", e);
    }
  }
}

其余代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • intellij idea的安装与使用(保姆级教程)
    intellijidea的安装与使用(保姆级教程)IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(gi ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • SVN安装配置和使用
    简介:SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS ... [详细]
  • SVN 功能说明(简版)
    Subversion(SVN)是什么?SVN是一种版本管理系统,是开源软件的基石。即使在沟通充分的情况下,多人维护同一份源代码的一定也会 ... [详细]
  • IamsettingupApacheserverwithTortoiseSVNforalocalsourcecoderepository.Ihaveobservedt ... [详细]
  • 双十一在家学用 Git
    对于所有的开发者来说,掌握一门代码版本控制系统都是必须的,无论是自己做项目,团队合作,工作中的合作,都离不开版 ... [详细]
  • SVN 结版
    项目结版详细步骤(SVN):首先svn中有三个目录branches、tags、trunkbranchestags–存放结版项目的目录t ... [详细]
  • 1找现有的镜像dockerhub上搜索到一个,其在github上公布了镜像构建的dockerfile,并且支持http和svn两种协议,就这个吧。https:github.come ... [详细]
  • Unity MVC丨(九)Unity MVC 最后总结
    大家好,我是SKODE。小提示:选中左侧目录,可快速找到所需内容本系列博客地址:传送门一、我们为什么要做成预制体首先讲下& ... [详细]
  • TheProblem:-Iwhanttoperiodicalymakeabackupofmydatabase,forthispurpose ... [详细]
  • 新的功能分支完成后要把分支和并到主干1查看新旧版本号使用svnlog--stop-on-copy2使用合并命令svnmerge-r旧版本号:新版本号source[即来自版本的svn ... [详细]
  • Jenkins是什么?Jenkins是一个开源软件项目百,是基于Java开发的一种持续集成(CI)工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成 ... [详细]
  • 现象:开发过程中,需要DBA帮忙执行SQL,发送右键时,从浏览器上复制的SVN路径是一串乱码问题:如何实现复 ... [详细]
  • SVN自动化正文共:5007 字预计阅读时间: 13 分钟平时自己多用Git来做版本控制,但很多公司内部依旧使用SVN,核心原因其实就是SVN够用了,懒得换,虽然自己用git,但对 ... [详细]
  • 删除iPad或iPhone目录privatevarkeychainskeychain-2.db文件,重启iPad或iPhone。1.如何卸载机内自带软件? ... [详细]
author-avatar
joewong9272038385813
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有