`

java 的svn客户端调用示例

 
阅读更多

 

 

1.pom依赖

 

		<dependency>
			<groupId>org.tmatesoft.svnkit</groupId>
			<artifactId>svnkit</artifactId>
			<version>1.3.5</version>
		</dependency>

 

2.java调用代码

   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.dav.DAVRepositoryFactory;
import org.tmatesoft.svn.core.internal.wc.DefaultSVNOptions;
import org.tmatesoft.svn.core.wc.SVNClientManager;
import org.tmatesoft.svn.core.wc.SVNLogClient;
import org.tmatesoft.svn.core.wc.SVNRevision;
import org.tmatesoft.svn.core.wc.SVNUpdateClient;

public class SvnTest {

	static {
		DAVRepositoryFactory.setup();
	}

	private SVNClientManager manager;
	private SVNURL repositoryBaseUrl;

	public SvnTest() {
		DefaultSVNOptions options = new DefaultSVNOptions();
		manager = SVNClientManager.newInstance(options);
		// manager = SVNClientManager.newInstance(options,
		// "username","passwrod"); //如果需要用户名密码
		try {
			repositoryBaseUrl = SVNURL
					.parseURIDecoded("http://svn.apache.org/repos/asf/logging/log4j/trunk/src/main/java/org/apache/log4j/or"); // 传入svn地址
		} catch (SVNException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	public void test() throws SVNException {
		SVNLogClient logClient = manager.getLogClient();

		// svn list
		DirEntryHandler handler = new DirEntryHandler(); // 在svn
															// co时对每个文件目录的处理,实现ISVNDirEntryHandler接口
		logClient.doList(repositoryBaseUrl, SVNRevision.HEAD, SVNRevision.HEAD,
				false, true, handler); // 列出当前svn地址的目录,对每个文件进行处理

		// svn co
		UpdateEventHandler svnEventHandler = new UpdateEventHandler(); // svn  co时对每个文件的处理
		SVNUpdateClient client = manager.getUpdateClient();
		client.setIgnoreExternals(true);
		client.setEventHandler(svnEventHandler);
		File to = new File("e:\\log\\testsvn"); // co出來的文件存放目錄
		client.doCheckout(repositoryBaseUrl, to, SVNRevision.HEAD,
				SVNRevision.HEAD, SVNDepth.INFINITY, false);

		// svn update
		client.setIgnoreExternals(true);
		client.setEventHandler(svnEventHandler); 

		client.doUpdate(to, SVNRevision.HEAD, SVNDepth.INFINITY,true, false);

	}

	public static void main(String[] args) throws SVNException {
		SvnTest svntest = new SvnTest();
		svntest.test();
	}
}

 

 

import java.util.ArrayList;
import java.util.List;

import org.tmatesoft.svn.core.ISVNDirEntryHandler;
import org.tmatesoft.svn.core.SVNDirEntry;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNNodeKind;

import com.alibaba.tools.code.SearchConfig;

public class DirEntryHandler implements ISVNDirEntryHandler {

    @Override
    public void handleDirEntry(SVNDirEntry dirEntry) throws SVNException {

        System.out.println(dirEntry.getRelativePath() + "/" + dirEntry.getName());
    }

}

 

 

 

import java.io.IOException;

import org.apache.commons.io.FileUtils;
import org.tmatesoft.svn.core.SVNCancelException;
import org.tmatesoft.svn.core.SVNNodeKind;
import org.tmatesoft.svn.core.wc.ISVNEventHandler;
import org.tmatesoft.svn.core.wc.SVNEvent;
import org.tmatesoft.svn.core.wc.SVNEventAction;

public class UpdateEventHandler implements ISVNEventHandler {

    public void handleEvent(SVNEvent event, double progress) {
        SVNEventAction action = event.getAction();
        SVNNodeKind nodeKind = event.getNodeKind();

        if (SVNNodeKind.DIR.equals(nodeKind)) {
            // folder
				System.out.println(event.getFile().getName());

        } else {
            // treat as file for all other type
            if (action == SVNEventAction.UPDATE_DELETE) {
            	try {
					System.out.println(event.getFile().getName() + "\t" + FileUtils.readFileToString(event.getFile()));
				} catch (IOException e) {

				}
            } else if (action == SVNEventAction.UPDATE_ADD || action == SVNEventAction.UPDATE_UPDATE) {
            	try {
					System.out.println(event.getFile().getName() + "\t" + FileUtils.readFileToString(event.getFile()));
				} catch (IOException e) {

				}
            }
        }
    }

    public void checkCancelled() throws SVNCancelException {
    }

}

 

输出:

 

/or
jms/jms
jms/MessageRenderer.java/MessageRenderer.java
jms/package.html/package.html
sax/sax
sax/AttributesRenderer.java/AttributesRenderer.java
sax/package.html/package.html
DefaultRenderer.java/DefaultRenderer.java
ObjectRenderer.java/ObjectRenderer.java
RendererMap.java/RendererMap.java
ThreadGroupRenderer.java/ThreadGroupRenderer.java
package.html/package.html
testsvn
testsvn

 

 

 

 

API参考:

http://svnkit.com/javadoc/org/tmatesoft/svn/core/wc/SVNUpdateClient.html#doUpdate(java.io.File, org.tmatesoft.svn.core.wc.SVNRevision, boolean)

  • 大小: 41.5 KB
1
0
分享到:
评论

相关推荐

    纯java操作svn--svnkit API

    SVNKit是一个完全由Java编写的Subversion客户端库,它允许开发者在Java应用程序中直接访问Subversion服务器而无需安装其他额外的客户端程序。这使得开发者能够更灵活地集成SVN功能到自己的项目中。 #### SVNUtil类...

    java svn操作

    在Java中进行SVN操作,通常会借助于一些库,如SVNKit,这是一个用纯Java编写的SVN客户端库。 首先,我们需要理解SVN的基本概念。版本控制系统是用来管理源代码版本的工具,它可以记录每次代码更改,以便于回滚到...

    timerTask定时任务使用java代码操作svn

    SVNKit是一个纯Java实现的SVN客户端库,提供了丰富的API,可以实现对SVN的各种操作,如添加、删除、提交、更新等。 - 首先,需要在项目中引入SVNKit依赖,然后创建SVNClientManager实例,这是所有SVN操作的基础。 ...

    删除svn信息的Java实现代码

    以下是一个简单的Java代码示例,用于删除指定路径的SVN信息: ```java import java.io.File; public class SvnDeleter { public static void main(String[] args) { String path = "path/to/your/folder"; // ...

    myeclipse7.0安装SVN,具体步骤以及site-1.6.2.1.zip

    1. **下载SVN客户端**:首先,你需要从官方网站或者第三方源下载适用于你操作系统的SVN客户端,例如TortoiseSVN。确保选择与你的操作系统匹配的版本。 2. **安装SVN客户端**:运行下载的安装程序,按照提示完成安装...

    svn-rcp开发实例

    本文将详细讲解如何在Rich Client Platform(RCP)开发中集成svn客户端,以实现高效的代码管理和协作。 标题“svn-rcp开发实例”指的是将Subversion的功能整合到基于Eclipse RCP(Rich Client Platform)的应用程序...

    利用statsvn进行代码量统计

    - 在安装SVN客户端时,建议选择全部安装选项,避免StatSVN无法正常调用SVN命令的问题。 - 使用Statsvn时,需要注意编码格式设置,确保统计数据的准确性。 #### 十、小结 通过以上步骤,我们可以利用Statsvn轻松地...

    集成Svn到Myecilpse

    Subclipse是一款专门为Eclipse设计的SVN客户端插件,它可以让用户在Eclipse IDE内直接操作SVN仓库。首先,需要访问Subclipse官网(http://subclipse.tigris.org/),下载最新版本的Subclipse插件。假设当前所需版本...

    svnkit-1.7.11

    2. **SVNKit**:作为Java实现的SVN客户端库,SVNKit为Java开发者提供了访问和操作SVN仓库的接口。它支持所有主要的SVN功能,包括创建、更新、提交、导出、导入、分支、合并等。SVNKit使得在Java应用中集成版本控制变...

    Ant & SVN task script

    这些任务都是通过调用SVN客户端工具来实现的,因此需要确保已经安装了SVN客户端并且可以被Ant访问到。 ##### 2. Ant的SVN任务示例 下面是一些常用的Ant的SVN任务示例: - **svnupdate**:用于更新工作副本。 ```...

    Java05_TortoiseSVN客户端使用教程.doc

    这是因为IDEA等集成开发环境需要调用命令行客户端工具来进行版本控制操作,如不勾选此选项,则后续在IDEA中配置版本控制系统时可能会找不到必要的`svn.exe`文件。 #### 三、TortoiseSVN的使用 ##### 3.1 SVN版本...

    Ant To Download the code from SVN automatically

    - 同样,你也需要安装SVN客户端,如TortoiseSVN,并确保其命令行工具svn可以在Ant脚本中调用。 2. **创建Ant构建文件**: Ant的工作主要通过一个XML格式的构建文件(通常命名为build.xml)来定义。在这个文件中,...

    springcloud微服务框架+服务模版

    eureka-producer-consumer:利用eureka实现服务提供与调用示例 spring-cloud-hystrix:Hystrix熔断的使用示例 hystrix-dashboard-turbine:熔断监控Hystrix Dashboard和Turbine的示例 spring-cloud-config-git:配置...

    redmine-java-api

    **描述解读:** 描述指出,这是一个开源的Java API,它的主要功能是允许开发人员通过编写Java代码来调用Redmine的接口,从而实现与Redmine系统的数据通信。在实际应用前,需要先将源代码编译成jar包,以便在Java项目...

    spring-cloud-examples

    eureka-producer-consumer:利用eureka实现服务提供与调用示例 spring-cloud-hystrix:Hystrix熔断的使用示例 hystrix-dashboard-turbine:熔断监控Hystrix Dashboard和Turbine的示例 spring-cloud-config-git:配置...

    svnkit帮助文档API+SVNKit实例+jar包

    SVNKit的API提供了诸如`org.tmatesoft.svn.core.SVNClientManager`,`org.tmatesoft.svn.core.SVNRepository`和`org.tmatesoft.svn.core.wc.SVNWCUtil`等类,它们分别用于管理SVN客户端,连接SVN仓库,以及处理工作...

    svnant-1.1.0-RC2.zip

    1. 支持SVN 1.6.x版本:svnant-1.1.0-RC2针对当时的最新SVN版本进行了优化,确保了与SVN客户端的良好兼容性。 2. 增强的任务集:此版本提供了丰富的Ant任务,如`svncheckout`(检出)、`svncommit`(提交)、`svn...

    简便安装的SVN

    此外,还提供了一段Java代码示例,虽然这段代码与SVN安装本身的关系不明确,但它展示了一个利用Java编程处理文件和目录的实用案例。对于开发人员来说,了解SVN的安装与配置以及如何在开发环境中使用SVN是非常重要的...

    Json-RPC_for_Java使用说明

    - **JSP中的使用**:在JSP页面引入必要的JavaScript库和JSON-RPC客户端脚本,即可开始调用后端Java服务。 - **引入JsonRpcClient.js**:这是客户端库,负责处理与服务器端的通信和数据解析。 - **调用**:使用提供的...

    svnkit1.8.15

    开发者可以利用SVNKit提供的`org.tmatesoft.svn.core.SVNClientManager`类创建一个SVN客户端实例,然后调用其方法来执行各种SVN操作。例如,获取文件的提交历史可以使用`SVNLogClient.doLog()`方法,传入文件路径和...

Global site tag (gtag.js) - Google Analytics