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. EasyUI - DataGrid 组建 - [ 样式功能 ]

    效果显示: 同上次博文效果. html代码: 同上次博文代码. js代码: align: 'center',//标题和内容居中 resizable: false,//不允许改变大小 //hidden: ...

  2. 将Qt 动态链接生成的exe及依赖dll打包方法

    源地址:http://blog.csdn.net/ztz0223/article/details/8939341 将Qt 动态链接生成的exe及依赖dll打包方法 原文:http://www.qtcn ...

  3. QModelIndex有internalPointer()函数,可以存任何数据,另有QAbstractItemModel::createIndex来创造节点

    整个model的节点数据,都靠它来记录了. 另有一个创造节点的函数(自带函数): QModelIndex QAbstractItemModel::createIndex(int arow, int a ...

  4. web攻击方式和防御方法

    在http请求报文中载入攻击代码,就能发起对web应用的攻击.通过url查询字段或者表单.http首部.cookie等途径吧攻击代码传入,若这时web应用存在安全漏洞,那内部信息就会遭到窃取! 对we ...

  5. 2007LA 3902 网络(树+贪心)

    https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=283&am ...

  6. 有没有安全的工作?(99条评论)——结论是没有一劳永逸的工作,要终身学习,IT业刚出道和老手还是有区别的(同样对于新技术,薪资可能是个问题)

    作者: 阮一峰 日期: 2015年12月15日 如果你经常使用互联网,可能知道有一种东西叫做Flash. 它是一种软件,用来制作网页游戏.动画,以及视频播放器.只要观看网络视频,基本都会用到它. 七八 ...

  7. 【ASP.NET Web API教程】2.3.7 创建首页

    原文:[ASP.NET Web API教程]2.3.7 创建首页 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本博客文章,请先看前面的内容. Part 7: Crea ...

  8. Effective C++ 第二版 8) 写operator new 和operator delete 9) 避免隐藏标准形式的new

    条款8 写operator new 和operator delete 时要遵循常规 重写operator new时, 函数提供的行为要和系统缺省的operator new一致: 1)正确的返回值; 2 ...

  9. 与众不同 windows phone (9) - Push Notification(推送通知)之概述, 推送 Toast 通知

    原文:与众不同 windows phone (9) - Push Notification(推送通知)之概述, 推送 Toast 通知 [索引页][源码下载] 与众不同 windows phone ( ...

  10. C#数学运算表达式解释器

    C#数学运算表达式解释器 測试文件内容: a=2+3*2; b=2*(2+3); 浏览按钮事件处理程序: private void button_browse_Click(object sender, ...