`
mjm13
  • 浏览: 49734 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

使用SvnKit获得提交记录

    博客分类:
  • java
 
阅读更多

由于工作需要通过JAVA获得SVN的提交记录,所以看了下SVNKit,

下面是代码,保存备份。

 

SvnKit项目地址:http://svnkit.com/index.html

 

package com.svnkit;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.apache.log4j.Logger;
import org.junit.BeforeClass;
import org.junit.Test;
import org.tmatesoft.svn.core.ISVNLogEntryHandler;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNLogEntry;
import org.tmatesoft.svn.core.SVNLogEntryPath;
import org.tmatesoft.svn.core.SVNURL;
import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager;
import org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory;
import org.tmatesoft.svn.core.internal.io.fs.FSRepositoryFactory;
import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl;
import org.tmatesoft.svn.core.io.SVNRepository;
import org.tmatesoft.svn.core.io.SVNRepositoryFactory;
import org.tmatesoft.svn.core.wc.SVNWCUtil;

public class SVNUtilTest {
    private static String url = "项目SVN路径";
    private static SVNRepository repository = null;

    @BeforeClass
    public static void setupLibrary() {
        DAVRepositoryFactory.setup();
        SVNRepositoryFactoryImpl.setup();
        FSRepositoryFactory.setup();
        try {
            repository = SVNRepositoryFactory.create(SVNURL.parseURIEncoded(url));
        }
        catch (SVNException e) {
            logger.error(e.getErrorMessage(), e);
        }
        // 身份验证
        ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager("SVN用户名","SVN密码");
        repository.setAuthenticationManager(authManager);
    }

    @Test
    public void filterCommitHistoryTest() throws Exception {
        // 过滤条件
        final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        final Date begin = format.parse("2014-02-13");
        final Date end = format.parse("2014-02-14");
        final String author = "";
        long startRevision = 0;
        long endRevision = -1;//表示最后一个版本
        final List<String> history = new ArrayList<String>();
		//String[] 为过滤的文件路径前缀,为空表示不进行过滤
        repository.log(new String[]{""},
                       startRevision,
                       endRevision,
                       true,
                       true,
                       new ISVNLogEntryHandler() {
                           @Override
                           public void handleLogEntry(SVNLogEntry svnlogentry)
                                   throws SVNException {
				//依据提交时间进行过滤
                               if (svnlogentry.getDate().after(begin)
                                   && svnlogentry.getDate().before(end)) {
                                   // 依据提交人过滤
                                   if (!"".equals(author)) {
                                       if (author.equals(svnlogentry.getAuthor())) {
                                           fillResult(svnlogentry);
                                       }
                                   } else {
                                       fillResult(svnlogentry);
                                   }
                               }
                           }

                           public void fillResult(SVNLogEntry svnlogentry) {
                          //getChangedPaths为提交的历史记录MAP key为文件名,value为文件详情
                               history.addAll(svnlogentry.getChangedPaths().keySet());
                           }
                       });
        for (String path : history) {
            System.out.println(path);
        }
    }
}

 

分享到:
评论

相关推荐

    SVNKit实例 + jar包 + SVNKit API

    5. **提交更改**:使用`SVNCommitClient`的`doCommit`方法将本地修改提交到仓库,需要提供要提交的路径列表和提交信息。 6. **更新和同步**:`SVNUpdateClient`的`doUpdate`方法用于将仓库的最新版本同步到本地,`...

    SVNkit的Jar包 和实例代码

    描述中提到的“实例代码”意味着该压缩包中可能包含了一些示例代码,这些代码展示了如何使用SVNkit进行实际操作。这对于初学者或者需要快速上手的开发者来说是非常宝贵的资源,因为他们可以直接参考这些代码了解如何...

    svnkit 手册

    SVNKit 手册 SVNKit 是一个基于 Java 语言的 Subversion 客户端库,提供了一个灵活的方式来访问 Subversion ...该手册涵盖了 SVNKit 的基本概念、开发环境、架构和组件关系等内容,旨在帮助开发者更好地使用 SVNKit。

    纯java操作svn--svnkit API

    本文将详细解析SVNKit API中的几个关键方法,并通过一个具体的示例来展示如何使用这些方法实现常见的SVN操作。 #### SVNKit API简介 SVNKit是一个完全由Java编写的Subversion客户端库,它允许开发者在Java应用程序...

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

    SVNKit提供了丰富的API,使得开发者能够执行常见的SVN操作,如检出、提交、更新、合并等。这个压缩包包含了SVNKit的帮助文档、API参考以及示例代码,是学习和使用SVNKit的重要资源。 首先,帮助文档是理解SVNKit...

    svnkit帮助文档API

    这个“svnkit帮助文档API”是一个离线版的资源,提供了详细的信息来帮助开发者理解和使用SVNKit库。下面将详细介绍SVNKit的主要组件、功能以及如何利用其API进行开发。 1. SVNKit核心组件: - SVNClientManager:...

    java实现svn,svnkit框架的简单应用

    4. **提交**:将工作目录中的更改保存回仓库,同时记录这些更改的元数据,包括作者、日期和提交消息。 5. **更新/同步**:将仓库的最新更改拉取到本地工作目录,保持与远程仓库同步。 6. **冲突解决**:当多个用户...

    svnkit low level api 使用实例

    目前真正自己写的svnkit底层接口使用代码,svnkit很稳定,但接口使用说明不清晰,所以会导致了使用过程中会有很多的坑,实例中有完整的解决方法

    svnkit-1.8.0.zip

    SVNKit (JavaSVN) 是一个纯 Java 的 SVN 客户端库,使用 SVNKit 无需安装任何 SVN 的客户端,支持各种操作系统。 这不是一个开源的类库,但你可以免费使用。 通过SVNKit,你可以在SVN上开发出自己的应用

    SVNKit1.7.9

    通过SVNKit,开发者可以构建与Subversion服务器交互的应用程序,进行版本控制操作,如添加、提交、更新、合并、回滚等,而无需依赖操作系统上的原生Subversion客户端。 在SVNKit 1.7.9中,关键特性包括: 1. **...

    svnkit1.8.15

    将`svnkit-1.8.15.jar`添加到项目的类路径中,就可以开始使用SVNKit的功能。对于现代构建系统如Maven或Gradle,可以将SVNKit作为依赖项来管理。 6. 注意事项: 虽然SVNKit是纯Java实现,但在某些情况下可能需要...

    SVNKit开发手册

    2. **SVNLogClient**:用于获取提交日志,可以列出版本历史中的提交记录。 3. **SVNUpdateClient**:用于更新工作副本,可以用来检出、更新和导出数据。 4. **SVNWCClient**:工作副本管理客户端,处理工作副本的...

    java 调用svn获取历史方法

    需要svnkit 使用方法 SVNUtil.getHistoryByDate("https://127.0.0.1:8443/svn/Test/mytestprotect/", "username", "password"); 如果jar 在我的其它资源里

    SVNKit开发的Demo

    SVNKit是一款强大的Java库,...通过这个Demo,开发者可以学习到如何在Java项目中有效地使用SVNKit库,提升版本控制的自动化水平,增强团队协作效率。同时,这也为理解Subversion的工作机制提供了一个直观的实践平台。

    SVNKittest(SVNKit各种操作demo)

    其他SVNKit的操作包括CheckOut,DoCommit,DoDiff,DoImport,DoUpdate,查看上次备注信息(message/log),DisplayFile(查看svn文件属性)DisplayRepositoryTree(查看某路径下的所有文件)

    svnkit-1.7.11

    这个“svnkit-1.7.11”压缩包包含了SVNKit的特定版本——1.7.11,这是一个稳定且广泛使用的版本。以下是对SVNKit 1.7.11及其相关知识点的详细说明: 1. **Subversion(SVN)**:Subversion是一种开源的版本控制系统...

    SVNKIT Java

    **SVNKit的使用** 1. **安装与依赖**:首先,你需要在项目中添加SVNKit的JAR文件。这可以通过Maven或Gradle等构建工具来完成,或者手动将JAR文件放入项目的类路径中。确保包含所有必需的依赖,如db4o和log4j。 2. ...

    svnkit-demo.rar

    标题 "svnkit-demo.rar" 暗示了一个关于使用 SVNKit 框架进行 Subversion(SVN)操作的示例项目。这个项目可能包含了演示如何对比不同版本号的文件、管理版本库以及获取相关信息并将其格式化为 JSON 的代码。 SVN...

    svnkit插件开发包 支持Java开发svn一键打包

    SVNKit提供了丰富的API,覆盖了SVN的大多数功能,包括但不限于创建、检查、更新、提交、合并、分支、标记等操作。它通过模拟SVN命令行工具的行为,使得在Java环境中进行版本控制变得简单易行。SVNKit支持多种SVN数据...

    svnkit 1.3.5

    svnkit是纯java实现的操作subversion的类库,使用起来非常的方便。官方文档提到,svnkit提供了三种类型的api:high level api、low level api和java hl api。本文简单介绍一下svnkit的high level api和low level api...

Global site tag (gtag.js) - Google Analytics