由于工作需要通过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); } } }
相关推荐
5. **提交更改**:使用`SVNCommitClient`的`doCommit`方法将本地修改提交到仓库,需要提供要提交的路径列表和提交信息。 6. **更新和同步**:`SVNUpdateClient`的`doUpdate`方法用于将仓库的最新版本同步到本地,`...
描述中提到的“实例代码”意味着该压缩包中可能包含了一些示例代码,这些代码展示了如何使用SVNkit进行实际操作。这对于初学者或者需要快速上手的开发者来说是非常宝贵的资源,因为他们可以直接参考这些代码了解如何...
SVNKit 手册 SVNKit 是一个基于 Java 语言的 Subversion 客户端库,提供了一个灵活的方式来访问 Subversion ...该手册涵盖了 SVNKit 的基本概念、开发环境、架构和组件关系等内容,旨在帮助开发者更好地使用 SVNKit。
本文将详细解析SVNKit API中的几个关键方法,并通过一个具体的示例来展示如何使用这些方法实现常见的SVN操作。 #### SVNKit API简介 SVNKit是一个完全由Java编写的Subversion客户端库,它允许开发者在Java应用程序...
SVNKit提供了丰富的API,使得开发者能够执行常见的SVN操作,如检出、提交、更新、合并等。这个压缩包包含了SVNKit的帮助文档、API参考以及示例代码,是学习和使用SVNKit的重要资源。 首先,帮助文档是理解SVNKit...
这个“svnkit帮助文档API”是一个离线版的资源,提供了详细的信息来帮助开发者理解和使用SVNKit库。下面将详细介绍SVNKit的主要组件、功能以及如何利用其API进行开发。 1. SVNKit核心组件: - SVNClientManager:...
4. **提交**:将工作目录中的更改保存回仓库,同时记录这些更改的元数据,包括作者、日期和提交消息。 5. **更新/同步**:将仓库的最新更改拉取到本地工作目录,保持与远程仓库同步。 6. **冲突解决**:当多个用户...
目前真正自己写的svnkit底层接口使用代码,svnkit很稳定,但接口使用说明不清晰,所以会导致了使用过程中会有很多的坑,实例中有完整的解决方法
SVNKit (JavaSVN) 是一个纯 Java 的 SVN 客户端库,使用 SVNKit 无需安装任何 SVN 的客户端,支持各种操作系统。 这不是一个开源的类库,但你可以免费使用。 通过SVNKit,你可以在SVN上开发出自己的应用
通过SVNKit,开发者可以构建与Subversion服务器交互的应用程序,进行版本控制操作,如添加、提交、更新、合并、回滚等,而无需依赖操作系统上的原生Subversion客户端。 在SVNKit 1.7.9中,关键特性包括: 1. **...
将`svnkit-1.8.15.jar`添加到项目的类路径中,就可以开始使用SVNKit的功能。对于现代构建系统如Maven或Gradle,可以将SVNKit作为依赖项来管理。 6. 注意事项: 虽然SVNKit是纯Java实现,但在某些情况下可能需要...
2. **SVNLogClient**:用于获取提交日志,可以列出版本历史中的提交记录。 3. **SVNUpdateClient**:用于更新工作副本,可以用来检出、更新和导出数据。 4. **SVNWCClient**:工作副本管理客户端,处理工作副本的...
需要svnkit 使用方法 SVNUtil.getHistoryByDate("https://127.0.0.1:8443/svn/Test/mytestprotect/", "username", "password"); 如果jar 在我的其它资源里
SVNKit是一款强大的Java库,...通过这个Demo,开发者可以学习到如何在Java项目中有效地使用SVNKit库,提升版本控制的自动化水平,增强团队协作效率。同时,这也为理解Subversion的工作机制提供了一个直观的实践平台。
其他SVNKit的操作包括CheckOut,DoCommit,DoDiff,DoImport,DoUpdate,查看上次备注信息(message/log),DisplayFile(查看svn文件属性)DisplayRepositoryTree(查看某路径下的所有文件)
这个“svnkit-1.7.11”压缩包包含了SVNKit的特定版本——1.7.11,这是一个稳定且广泛使用的版本。以下是对SVNKit 1.7.11及其相关知识点的详细说明: 1. **Subversion(SVN)**:Subversion是一种开源的版本控制系统...
**SVNKit的使用** 1. **安装与依赖**:首先,你需要在项目中添加SVNKit的JAR文件。这可以通过Maven或Gradle等构建工具来完成,或者手动将JAR文件放入项目的类路径中。确保包含所有必需的依赖,如db4o和log4j。 2. ...
标题 "svnkit-demo.rar" 暗示了一个关于使用 SVNKit 框架进行 Subversion(SVN)操作的示例项目。这个项目可能包含了演示如何对比不同版本号的文件、管理版本库以及获取相关信息并将其格式化为 JSON 的代码。 SVN...
SVNKit提供了丰富的API,覆盖了SVN的大多数功能,包括但不限于创建、检查、更新、提交、合并、分支、标记等操作。它通过模拟SVN命令行工具的行为,使得在Java环境中进行版本控制变得简单易行。SVNKit支持多种SVN数据...
svnkit是纯java实现的操作subversion的类库,使用起来非常的方便。官方文档提到,svnkit提供了三种类型的api:high level api、low level api和java hl api。本文简单介绍一下svnkit的high level api和low level api...