zoukankan      html  css  js  c++  java
  • SVNKIT操作SVN版本库的完整例子

    Model:

    package com.wjy.model;
    
    public class RepositoryInfo {
        public static String storeUrl="http://10.13.30.22/svn/SVNRepository/Checked/";
        public static String buffUrl="http://10.13.30.22/svn/SVNRepository/UnChecked/";
        public static String sysInfoUrl="http://10.13.30.22/svn/SVNRepository/Log/";
    }

    Option:

    package com.wjy.modeloption;
    
    import java.awt.List;
    import java.io.File;
    
    import org.tmatesoft.svn.core.SVNDepth;
    import org.tmatesoft.svn.core.SVNException;
    import org.tmatesoft.svn.core.SVNURL;
    import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl;
    import org.tmatesoft.svn.core.internal.wc.DefaultSVNOptions;
    import org.tmatesoft.svn.core.internal.wc17.db.SVNWCDb.ReposInfo;
    import org.tmatesoft.svn.core.wc.ISVNOptions;
    import org.tmatesoft.svn.core.wc.SVNClientManager;
    import org.tmatesoft.svn.core.wc.SVNCommitClient;
    import org.tmatesoft.svn.core.wc.SVNCopyClient;
    import org.tmatesoft.svn.core.wc.SVNCopySource;
    import org.tmatesoft.svn.core.wc.SVNRevision;
    import org.tmatesoft.svn.core.wc.SVNUpdateClient;
    import org.tmatesoft.svn.core.wc.SVNWCUtil;
    
    import com.wjy.model.RepositoryInfo;
    
    public class ModelOption {
        private SVNClientManager ourClientManager;
        private SVNURL repositoryOptUrl;
        private String userName;
        private String passwd;
        public ModelOption(String userName,String passwd){
            this.userName=userName;
            this.passwd=passwd;
        }
        private void setUpSVNClient(String userName,String passwd){
            SVNRepositoryFactoryImpl.setup();
            ISVNOptions options = SVNWCUtil.createDefaultOptions(true);
            ourClientManager = SVNClientManager.newInstance(
                    (DefaultSVNOptions) options, userName, passwd);
        }
        /**
         * 上传模型
         * @param dirPath
         */
        public void uploadMoel(String dirPath,String modelName){
            setUpSVNClient(userName,passwd);
            File impDir = new File(dirPath);
            SVNCommitClient commitClient = ourClientManager.getCommitClient();
            commitClient.setIgnoreExternals(false);
            try {
                repositoryOptUrl=SVNURL.parseURIEncoded(RepositoryInfo.buffUrl+modelName);
                commitClient.doImport(impDir,
                        repositoryOptUrl, "import operation!", null, true, true,
                        SVNDepth.INFINITY);
            } catch (SVNException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
        /**
         * 下载模型
         */
        public void downloadModel(String downloadModelName,String dirPath){
            setUpSVNClient(userName,passwd);
            File outDir=new File(dirPath+"/"+downloadModelName);
            //outDir.mkdirs();//创建目录
            SVNUpdateClient updateClient=ourClientManager.getUpdateClient();
            updateClient.setIgnoreExternals(false);
            
            try {
                repositoryOptUrl=SVNURL.parseURIEncoded(RepositoryInfo.storeUrl+downloadModelName);
                updateClient.doExport(repositoryOptUrl, outDir, SVNRevision.HEAD, SVNRevision.HEAD, "downloadModel",true,true);
            } catch (SVNException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
        /**
         * 删除模型
         */
        public void deleteModel(String deleteModelName){
            setUpSVNClient(userName,passwd);
            SVNCommitClient commitClient=ourClientManager.getCommitClient();
            commitClient.setIgnoreExternals(false);
            
            try {
                repositoryOptUrl=SVNURL.parseURIEncoded(RepositoryInfo.storeUrl+deleteModelName);
                SVNURL deleteUrls[]=new SVNURL[1];
                deleteUrls[0]=repositoryOptUrl;
                commitClient.doDelete(deleteUrls, "delete model");
            } catch (SVNException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
        }
        
        /**
         * 移动模型
         */
        public void moveModel(String modelName){
            setUpSVNClient(userName,passwd);
            SVNCopyClient copyClient=ourClientManager.getCopyClient();
            copyClient.setIgnoreExternals(false);
            
            try {
                repositoryOptUrl=SVNURL.parseURIEncoded(RepositoryInfo.buffUrl+modelName);
                SVNURL destUrl=SVNURL.parseURIEncoded(RepositoryInfo.storeUrl+modelName);
                SVNCopySource[] copySources = new SVNCopySource[1];
                copySources[0] = new SVNCopySource(SVNRevision.HEAD, SVNRevision.HEAD, repositoryOptUrl);
                
                copyClient.doCopy(copySources, destUrl, true, false, false, "move", null);
            } catch (SVNException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
        }
    }

    测试:

    package com.wjy.test;
    
    import com.wjy.modeloption.ModelOption;
    
    public class MainTest {
        public static void main(String args[]){
            ModelOption modelOption=new ModelOption("harry", "harryssecret");
            
    //        modelOption.uploadMoel("E://LoveEyes","ModelSB");
            
    //        modelOption.moveModel("ModelSB");
        
    //        modelOption.downloadModel("ModelSB","E://download/");
            
    //        modelOption.deleteModel("ModelSB");
        }
    }
  • 相关阅读:
    七牛大数据平台的演进与大数据分析实践--转
    Re:从0开始的微服务架构:(一)重识微服务架构--转
    Re:从 0 开始的微服务架构--(三)微服务架构 API 的开发与治理--转
    Java7里try-with-resources分析--转
    线上服务CPU100%问题快速定位实战--转
    Windows下本机简易监控系统搭建(Telegraf+Influxdb+Grafana)--转
    Scalable, Distributed Systems Using Akka, Spring Boot, DDD, and Java--转
    ES Segment Memory——本质上就是segment中加到内存的FST数据,因此segment越多,该内存越大
    Self Organizing Maps (SOM): 一种基于神经网络的聚类算法
    RBF网络——核心思想:把向量从低维m映射到高维P,低维线性不可分的情况到高维就线性可分了
  • 原文地址:https://www.cnblogs.com/wangjiyuan/p/svnkitwanchenglizi.html
Copyright © 2011-2022 走看看