由于工作需要通过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 使用方法 SVNUtil.getHistoryByDate("https://127.0.0.1:8443/svn/Test/mytestprotect/", "username", "password"); 如果jar 在我的其它资源里
这些库提供了与SVN仓库通信的功能,包括获取提交记录、差异信息等。然后,它会对每个提交进行迭代,获取该提交涉及的所有文件及其对应的修改。 接下来,关键的部分是计算代码行的增减。这通常通过比较文件的两个...
在Eclipse中,安装SVN 1.8插件可以极大地提高开发效率,让开发者无需离开IDE就能进行版本控制操作,如提交、更新、合并、查看历史记录等。以下是关于Eclipse SVN 1.8插件的详细说明: 1. **安装方法**: - 直接...
一旦插件安装成功,你可以开始在IDEA中使用SVN进行版本控制操作,如添加文件到版本库、提交更改、更新项目、解决冲突等。这些操作都可以在IDEA的图形用户界面上完成,无需离开IDEA去命令行中执行。 此外,IDEA的SVN...
SVN允许用户跟踪和记录文件的修改,便于团队协作和代码管理。 【安装SVN】在不同的集成开发环境(IDE)中,安装SVN插件的方法略有不同。以下是针对MyEclipse10的三种安装SVN插件的方式: 1. **手动安装**: - ...
- **提交更改**:将修改后的文件提交到仓库,记录你的工作。 - **查看历史**:查看文件或项目的版本历史,了解每次更改的详情。 - **分支和合并**:创建分支进行实验性开发,然后将改动合并回主分支。 - **解决冲突*...
2. **Java SVN库**:使用Apache Subversion的Java库(如SVNKit)来执行实际的SVN命令。 3. **前端交互**:利用jQuery或其他JavaScript库处理AJAX请求,更新UI并显示操作状态。 4. **UI设计**:创建直观的界面,使...