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");
        }
    }
  • 相关阅读:
    MSMQ简例
    C#观察者模式简例
    C#常见算法题目(面试准备)
    HttpWebRequest
    自定义Attribute简例
    .Net下的 ORM框架介紹
    for xml path的应用
    .net中日至框架log4net.dll如何使用
    动态载入.ascx用户控件
    wap 2.0 编写规范
  • 原文地址:https://www.cnblogs.com/wangjiyuan/p/svnkitwanchenglizi.html
Copyright © 2011-2022 走看看