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[];
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版本库的完整例子的更多相关文章
- SVN版本库备份和恢复
1.版本库备份 1.1.svnadmin dump方式备份 此方法借助的是Subversion官网推荐的svnadmin dump备份方式,它的优点是比较灵活,既可以进行全量备份又可以进行增量备份,并 ...
- TortoiseSVN和VisualSVN-Server的配置使用,外网访问SVN版本库
TortoiseSVN和VisualSVN-Server的配置使用,外网访问SVN版本库 SVN客户端程序:TortoiseSVN SVN服务器程序:VisualSVN-Server ######## ...
- SVN版本库(访问权限)配置实例笔记
http://blog.csdn.net/zjianbo/article/details/8578297 SVN版本库(访问权限)配置实例笔记 本系列文章由ex_net(张建波)编写,转载请注明出处. ...
- 工作随笔——使用svnsync实时备份SVN版本库
前段时间把SVN版本库从win迁移到了Linux上,没隔几天那台win的磁盘就严重坏道了....这TMD什么运气! 花费了点时间研究了下svn自己的同步工具.写个日志记录下. 注意:svnsync要求 ...
- 用svnsync 同步备份 svn 版本库 从一台服务器到另一台服务器
如用svnsync 同步备份两台机器的svn .(就以linux服务器到windows服务器为例子) 要同步的项目名称:source_svn svn 版本库1 .4 以上 源目录: ...
- Linux 搭建svn版本库
一.安装svn服务器端yum install subversion 从镜像下载安装svn服务器端 如果后面执行“svnadmin create /usr/local/svn/sunny”提示 ...
- 使用 Python 操作 Git 版本库 - GitPython
GitPython 是一个用于操作 Git 版本库的 python 包, 它提供了一系列的对象模型(库 - Repo.树 - Tree.提交 - Commit等) 用于操作版本库中的相应对象. 版本库 ...
- linux服务器上创建svn版本库
1. 创建存放各个svn版本库的目录svnrepos(自己定义路径) -bash: cd /usr/local/apache/htdocs/ -bash: mkdir svnrepos 2. 假设我要 ...
- 使用svnsync实时备份SVN版本库
前段时间把SVN版本库从win迁移到了Linux上,没隔几天那台win的磁盘就严重坏道了....这TMD什么运气! 花费了点时间研究了下svn自己的同步工具.写个日志记录下. 注意:svnsync要求 ...
随机推荐
- delphiXE调用Objective-c库
http://stackoverflow.com/questions/16515218/xe4-firemonkey-ios-static-library-pascal-conversion-from ...
- python模块介绍- HTMLParser 简单的HTML和XHTML解析器
python模块介绍- HTMLParser 简单的HTML和XHTML解析器 2013-09-11 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq ...
- [每日一题] OCP1z0-047 :2013-08-28 DELETE..........................................................160
转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/10475707 正确答案:ACD 根据题库,操作如下: A答案能删除: oe@OCM> ...
- Android开发:在onTouchEvent中处理任意时间的长按事件
Android提供了GestureDetector类来处理一些常用的手势操作,比如说 onLongPress,onFling 等.但这里不使用GestureDetector,而是直接在自定义View重 ...
- Ural 1073 Square Country (DP)
题目地址:Ural 1073 DP水题.也能够说是背包. #include <iostream> #include <cstdio> #include <string&g ...
- javascript(七)document.write
<h1>test</h1> <button type="button" onclick="my_function">点击me ...
- c friend -- 友元
c friend -- 友元 友元用于突破protected 或者 private 保护的限制,首先要做的是在被访问者的类中声明是友元函数或者友元类.代码如下 #include <iostrea ...
- fastjson 之常见的数据类型与json的相互转换
public class FastJsonTest1 { /** * 数组转json格式字符串 */ public void array2Json(){ String[] arr = {"b ...
- SVM入门(十)将SVM用于多类分类
源地址:http://www.blogjava.net/zhenandaci/archive/2009/03/26/262113.html 从 SVM的那几张图可以看出来,SVM是一种典型的两类分类器 ...
- Java DatagramSocket(UDP)要注意的问题
因为byte数组的大小问题,在网络发送过程中.可能包括多余的空格,若接收时要对数据进行比較,最好先将数据做下处理,处理掉多余的空格.