`
mjm13
  • 浏览: 49843 次
  • 性别: 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);
        }
    }
}

 

分享到:
评论

相关推荐

    java 调用svn获取历史方法

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

    java实现的svn统计修改代码行数完整源码

    这些库提供了与SVN仓库通信的功能,包括获取提交记录、差异信息等。然后,它会对每个提交进行迭代,获取该提交涉及的所有文件及其对应的修改。 接下来,关键的部分是计算代码行的增减。这通常通过比较文件的两个...

    eclipse svn1.8插件

    在Eclipse中,安装SVN 1.8插件可以极大地提高开发效率,让开发者无需离开IDE就能进行版本控制操作,如提交、更新、合并、查看历史记录等。以下是关于Eclipse SVN 1.8插件的详细说明: 1. **安装方法**: - 直接...

    IDEA使用本地SVN导入项目的插件

    一旦插件安装成功,你可以开始在IDEA中使用SVN进行版本控制操作,如添加文件到版本库、提交更改、更新项目、解决冲突等。这些操作都可以在IDEA的图形用户界面上完成,无需离开IDEA去命令行中执行。 此外,IDEA的SVN...

    svn安装以及使用还行吧

    SVN允许用户跟踪和记录文件的修改,便于团队协作和代码管理。 【安装SVN】在不同的集成开发环境(IDE)中,安装SVN插件的方法略有不同。以下是针对MyEclipse10的三种安装SVN插件的方式: 1. **手动安装**: - ...

    subclipse-1.10.9.zip

    - **提交更改**:将修改后的文件提交到仓库,记录你的工作。 - **查看历史**:查看文件或项目的版本历史,了解每次更改的详情。 - **分支和合并**:创建分支进行实验性开发,然后将改动合并回主分支。 - **解决冲突*...

    基于LiveConnect技术的SVN Java Web插件的设计与开发.zip

    2. **Java SVN库**:使用Apache Subversion的Java库(如SVNKit)来执行实际的SVN命令。 3. **前端交互**:利用jQuery或其他JavaScript库处理AJAX请求,更新UI并显示操作状态。 4. **UI设计**:创建直观的界面,使...

Global site tag (gtag.js) - Google Analytics