`

svn kit 简单使用

阅读更多

1. util.DefaultSVNAnnotateHandler.java

package util;

import java.io.File;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.wc.ISVNAnnotateHandler;

public class DefaultSVNAnnotateHandler implements ISVNAnnotateHandler {

	private Map<Integer,String> lineAuthorMap = new HashMap<Integer,String>();
	
	public void handleEOF() throws SVNException {
		// TODO Auto-generated method stub

	}

	public void handleLine(Date date, long revision, String author, String line)
			throws SVNException {

	}

	public void handleLine(Date date, long revision, String author,
			String line, Date mergedDate, long mergedRevision,
			String mergedAuthor, String mergedPath, int lineNumber)
			throws SVNException {
		lineAuthorMap.put(lineNumber, author);

	}

	public boolean handleRevision(Date date, long revision, String author,
			File contents) throws SVNException {
		// TODO Auto-generated method stub
		return false;
	}

	public Map<Integer, String> getLineAuthorMap() {
		return lineAuthorMap;
	}
	
	

}

 

2. util.SVNUtil.java

package util;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Map;
import java.util.logging.Logger;

import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNURL;
import org.tmatesoft.svn.core.auth.BasicAuthenticationManager;
import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager;
import org.tmatesoft.svn.core.io.SVNRepository;
import org.tmatesoft.svn.core.wc.SVNClientManager;
import org.tmatesoft.svn.core.wc.SVNRevision;


public class SVNUtil {
	
	private static Logger logger = Logger.getLogger(SVNUtil.class.getName());
	
	private static SVNClientManager getSVNClientManager(){
		SVNClientManager svnClientManager = SVNClientManager.newInstance();
		
		ISVNAuthenticationManager authManager = new BasicAuthenticationManager("xiao", "xiao");
		
		svnClientManager.setAuthenticationManager(authManager );
		
		return svnClientManager;
	}
	
	
	public static File getFileFromSVN(String filePath,  
            long revision,String destFilePath) {  
		File file = new File(destFilePath);
		SVNURL reponsitoryURL = null;
		FileOutputStream fos = null;
		try {
			reponsitoryURL = SVNURL.parseURIEncoded(filePath);
			
			fos = new FileOutputStream(file);
			
			SVNRepository  reponsitory = getSVNClientManager().createRepository(reponsitoryURL, false);

			reponsitory.getFile("", revision, null, fos);
		} catch (Exception e) {
			throw new RuntimeException(e);
		}finally{
			if(fos!=null){
				try {
					fos.close();
				} catch (IOException e) {
					logger.warning(e.getMessage());
				}
			}
		}
		return file;
    }  
	
	
	public static Map<Integer,String> getFileInfo(String filePath,long revision) throws SVNException{
		SVNURL url = SVNURL.parseURIEncoded(filePath);
		SVNRevision pegRevision = SVNRevision.create(revision);
		SVNRevision startRevision = SVNRevision.create(0);
		SVNRevision endRevision = SVNRevision.create(revision);
		DefaultSVNAnnotateHandler handler = new DefaultSVNAnnotateHandler();
		getSVNClientManager().getLogClient().doAnnotate(url, pegRevision, startRevision, endRevision, handler);
		
		return handler.getLineAuthorMap();
	}
}

 

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>svn</groupId>
	<artifactId>svn</artifactId>
	<packaging>jar</packaging>
	<version>0.0.1-SNAPSHOT</version>
	<name>svn</name>
	<url>http://maven.apache.org</url>
	<dependencies>
		<dependency>
			<groupId>org.tmatesoft.svnkit</groupId>
			<artifactId>svnkit</artifactId>
			<version>1.8.5</version>
		</dependency>
		
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
</project>

 

分享到:
评论

相关推荐

    Hudson_Jenkins+SVN_配置使用手册__实验室编写

    JDK(Java Development Kit)是Jenkins运行的基础环境之一。正确安装并配置JDK是确保Jenkins能够顺利执行Java项目构建的前提。根据文档,安装过程包括: 1. **JDK的安装**:下载并运行JDK安装程序,如`jdk-6u10-rc2...

    SVN安裝、JDK配置

    1. **在线安装**:如果你的计算机能够连接到互联网,最简单的方式是通过在线安装程序进行安装。这通常涉及访问SVN的官方网站或提供相应软件包的第三方平台,下载最新的安装包,然后按照向导的指示进行安装。安装过程...

    Myeclipse下安装和使用svn服务器端、客户端(图解)

    - 在“SVN Kit”选项中选择已安装的SVN插件。 - 设置默认的SVN客户端工具路径。 - 完成配置后,即可在MyEclipse中使用SVN进行版本控制操作,包括检出、提交、更新等。 #### 五、总结 通过以上步骤,可以顺利...

    svn plugin

    3. svnkit.jar:这是一个关键的库文件,代表Subversion Kit,它是Java实现的SVN客户端库,用于与SVN服务器通信。它提供了丰富的API,使得开发者可以方便地在Java应用中集成SVN功能。 4. sqljet.1.0.4.jar:SQLJet是...

    android安装及svn、arcgis插件

    首先,我们需要安装Java Development Kit (JDK),因为Android应用主要使用Java语言编写。访问Oracle官方网站(http://www.oracle.com/technetwork/java/javase/downloads/index.html)下载适合您操作系统的JDK版本。...

    Jenkins+Maven+SVN+Tomcat持续集成实战v2.pdf

    安装Maven相对简单,下载Maven的压缩包后解压,并设置M2_HOME环境变量和PATH变量,使得可以在命令行中直接使用mvn命令。在Maven中,通常会有一个pom.xml文件用于定义项目依赖、插件、构建配置等。Maven的生命周期...

    hudson+maven+svn自动化部署

    - **连接测试**: 使用客户端连接到服务器上的 SVN 仓库,并创建自己的工作区。 4. **Maven**: - **作用**: Maven 是一个项目管理和理解工具,帮助开发者更有效地构建和管理 Java 项目。 - **安装**: 解压 Maven ...

    MyEclipse集成svn

    - 必需组件包括:“Subclipse Core”,“SVN Kit Library”,“Optional JNA Library”。 - 可选安装“Subclipse Integration for Mylyn”以获得更好的集成体验。 - 安装完毕后记得勾选“Add to Profile”以保存...

    eclipse工具插件jetty_svn

    综上所述,jetty_svn插件将Jetty服务器和Subversion(SVN)的强大功能整合到了Eclipse开发环境中,通过简单的links安装方式,使得开发者能够在IDE内高效地管理Web应用和版本控制,提升开发效率。同时,插件的依赖...

    CentOS安装jdk、MySQL、tomcat、svn、nginnx.pdf

    - 将解压后的文件夹重命名为简单易懂的名称,比如将jdk-1.8.0_161重命名为jdk8。 - 配置环境变量,编辑/etc/profile文件,在文件末尾添加JAVA_HOME、PATH和CLASSPATH环境变量。 - 重新加载配置文件并验证环境变量...

    jsp实现的学生管理系统

    1. **安装Java JDK**:首先确保已经安装了Java Development Kit (JDK)。 2. **配置Tomcat服务器**:Tomcat是一个免费开源的Servlet容器,支持JSP和Servlet技术。 3. **IDE选择**:推荐使用Eclipse或IntelliJ IDEA等...

    java软件、下载、安装和配置.pdf

    首先,我们来看JDK(Java Development Kit),它是Java编程语言的开发环境,包含了编译器、调试器和其他工具,用于创建和运行Java应用程序。在1.6.0版本中,Java提供了稳定性和性能的优化。 1.1 简介:JDK是Java...

    sebeclipse-site-1.6.18

    3. svnkit.jar:这是Subversion Kit的核心库,它是一个纯Java实现的Subversion客户端库,允许Eclipse通过Java接口与Subversion服务器进行交互,如提交、更新、检出等操作。 4. sqljet.1.0.4.jar:SQLJet是一款开源...

    android及ndk配置文档

    在开始Android开发之前,首先需要安装并配置Java Development Kit (JDK)。这是构建Android应用的基础,因为Android Studio和其它相关工具都是基于Java的。 - **下载与安装**:从Svn路径(此处未提供具体链接,应...

    IntelliJ+IDEA+使用教程

    创建项目时,记得配置好SDK(Software Development Kit)和构建工具,例如JDK和Maven或Gradle。 编码过程中,IDEA的智能代码补全功能是其一大亮点。它能根据上下文提供类、方法、变量的自动补全,极大地提高了编写...

    Java配置.rar

    首先,Jdk 1.8,全称为Java Development Kit 1.8,是Java编程语言的开发和运行环境。Jdk包含了Java编译器、Java虚拟机(JVM)和Java类库,使得开发者能够编写、编译和运行Java程序。Jdk 1.8引入了诸多新特性,如...

    Maven项目与Eclipse平台协同开发指南

    1. **使用独立的SVN应用程序**:如TortoiseSVN,先从SVN仓库检出项目,然后在Eclipse中导入已检出的项目。 2. **使用Eclipse的SVN插件**:如Subversive或Subclipse,直接在Eclipse内完成检出操作,这使得版本控制与...

    Mac mojave 安装包 javahl 1.11

    1. **检查系统需求**:确保你的Mac OS Mojave系统已经更新到最新版本,并且安装了Java Development Kit (JDK) 8或更高版本,因为JavaHL需要JDK来运行。 2. **获取依赖库**:JavaHL依赖于Apache APR(Apache ...

Global site tag (gtag.js) - Google Analytics