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[];
deleteUrls[]=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[];
copySources[] = 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");
}
}

SVNKIT操作SVN版本库的完整例子的更多相关文章

  1. SVN版本库备份和恢复

    1.版本库备份 1.1.svnadmin dump方式备份 此方法借助的是Subversion官网推荐的svnadmin dump备份方式,它的优点是比较灵活,既可以进行全量备份又可以进行增量备份,并 ...

  2. TortoiseSVN和VisualSVN-Server的配置使用,外网访问SVN版本库

    TortoiseSVN和VisualSVN-Server的配置使用,外网访问SVN版本库 SVN客户端程序:TortoiseSVN SVN服务器程序:VisualSVN-Server ######## ...

  3. SVN版本库(访问权限)配置实例笔记

    http://blog.csdn.net/zjianbo/article/details/8578297 SVN版本库(访问权限)配置实例笔记 本系列文章由ex_net(张建波)编写,转载请注明出处. ...

  4. 工作随笔——使用svnsync实时备份SVN版本库

    前段时间把SVN版本库从win迁移到了Linux上,没隔几天那台win的磁盘就严重坏道了....这TMD什么运气! 花费了点时间研究了下svn自己的同步工具.写个日志记录下. 注意:svnsync要求 ...

  5. 用svnsync 同步备份 svn 版本库 从一台服务器到另一台服务器

    如用svnsync 同步备份两台机器的svn .(就以linux服务器到windows服务器为例子) 要同步的项目名称:source_svn svn 版本库1 .4 以上 源目录:           ...

  6. Linux 搭建svn版本库

    一.安装svn服务器端yum install subversion      从镜像下载安装svn服务器端 如果后面执行“svnadmin create /usr/local/svn/sunny”提示 ...

  7. 使用 Python 操作 Git 版本库 - GitPython

    GitPython 是一个用于操作 Git 版本库的 python 包, 它提供了一系列的对象模型(库 - Repo.树 - Tree.提交 - Commit等) 用于操作版本库中的相应对象. 版本库 ...

  8. linux服务器上创建svn版本库

    1. 创建存放各个svn版本库的目录svnrepos(自己定义路径) -bash: cd /usr/local/apache/htdocs/ -bash: mkdir svnrepos 2. 假设我要 ...

  9. 使用svnsync实时备份SVN版本库

    前段时间把SVN版本库从win迁移到了Linux上,没隔几天那台win的磁盘就严重坏道了....这TMD什么运气! 花费了点时间研究了下svn自己的同步工具.写个日志记录下. 注意:svnsync要求 ...

随机推荐

  1. ASP.NET - 编写让别人能读懂的代码

    http://www.cnblogs.com/richieyang/p/4840614.html

  2. Appium 命令行启动配置

    Appium 安装过后,会有图形界面,同样也支持命令行参数的启动和配置 Windws: 在windows 安装配置Appium有三种方式: Node install -g appium .exe文件安 ...

  3. 杭电OJ_DIY_YTW2_1001 A Mathematical Curiosity

    Problem Description Given two integers n and m, count the number of pairs of integers (a,b) such tha ...

  4. 第13章、布局Layouts之RelativeLayout相对布局(从零開始学Android)

    RelativeLayout相对布局 RelativeLayout是一种相对布局,控件的位置是依照相对位置来计算的,后一个控件在什么位置依赖于前一个控件的基本位置,是布局最经常使用,也是最灵活的一种布 ...

  5. C++学习之路—引用(一)—基础知识

    (根据<C++程序设计>(谭浩强)整理,整理者:华科小涛,@http://www.cnblogs.com/hust-ghtao转载请注明) 对一个数据可以建立一个“引用”,它的作用是为一个 ...

  6. JQuery - 留言之后,不重新加载数据,直接显示发表内容

    留言板中,发表信息的时候,使用Ajax存储到后台数据库,如果存储成功,不重新加载数据库,直接显示发表内容. 代码: var Nicehng = ''; var kkimgpath = ''; var ...

  7. JSP的学习(2)——语法知识一

    上一篇<JSP的学习>讲述了JSP的一些基础知识和底层原理,本篇将来学习JSP所需掌握的语法知识等. JSP的语法主要包括以下几个部分的内容: 1)         JSP模板元素 2)  ...

  8. 有空研究一下OwnerDraw和三种Windows风格CS_OWNDC和CS_PARENTDC和CS_CLASSDC

    就在StdCtrls.pas, ExtCtrls.pas和Buttons.pas三个类里研究就够了,这是初步的搜索结果: ---------- 在打开的文档中查找 ---------- "G ...

  9. 把HTML5网页封装成APP,APK的方法

     phonegap appcan HBuilder的native.js     推荐你用两个东西打包 一个是ionic,一个是hbuilder,Maven,apicloud   http://mobi ...

  10. Ural 1073 Square Country (DP)

    题目地址:Ural 1073 DP水题.也能够说是背包. #include <iostream> #include <cstdio> #include <string&g ...