由于工作需要通过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); } } }