java 获取svn 提交记录

import java.io.File;
import java.util.Arrays;
import java.util.Collection;
import java.util.Date;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNLogEntry;
import org.tmatesoft.svn.core.SVNURL;
import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager;
import org.tmatesoft.svn.core.internal.wc.DefaultSVNOptions;
import org.tmatesoft.svn.core.io.SVNRepository;
import org.tmatesoft.svn.core.io.SVNRepositoryFactory;
import org.tmatesoft.svn.core.wc.SVNWCUtil;


public class SvnUtil {
	private static Logger log = LoggerFactory.getLogger(SvnUtil.class);
    private String userName = ""; //svn账号
    private String password = ""; //svn密码
    private String urlString = ""; //svnurl
    
    private String tempDir = System.getProperty("java.io.tmpdir"); //临时文件
    private DefaultSVNOptions options = SVNWCUtil.createDefaultOptions(true);
    
    private SVNRepository repos;
    private ISVNAuthenticationManager authManager;
    
    public SvnUtil() {
        try {
            init();
        } catch (SVNException e) {
            e.printStackTrace();
        }
    }
    public void init() throws SVNException{
        log.info("开始加载");
        authManager = SVNWCUtil.createDefaultAuthenticationManager(new File(tempDir+"/auth"), userName, password.toCharArray());
        options.setDiffCommand("-x -w");
        repos = SVNRepositoryFactory.create(SVNURL.parseURIEncoded(urlString));
        repos.setAuthenticationManager(authManager);
        log.info("init completed");
    }
    
    /**获取一段时间内,所有的commit记录
     * @param st	开始时间
     * @param et	结束时间
     * @return
     * @throws SVNException
     */
    public SVNLogEntry[] getLogByTime(Date st, Date et) throws SVNException{
        long startRevision = repos.getDatedRevision(st);
        long endRevision = repos.getDatedRevision(et);
        @SuppressWarnings("unchecked")
        Collection logEntries = repos.log(new String[]{""}, null,
                startRevision, endRevision, true, true);
        SVNLogEntry[] svnLogEntries = logEntries.toArray(new SVNLogEntry[0]);
        SVNLogEntry[] svnLogEntries1 = null;
        if(svnLogEntries.length==0){
        	svnLogEntries1 = Arrays.copyOf(svnLogEntries, svnLogEntries.length);
        }else{
        	svnLogEntries1 = Arrays.copyOf(svnLogEntries, svnLogEntries.length-1);
        }
        return svnLogEntries1;
    }

}

代码如上,我这边主要用的就是查看2个时间段内svn提交记录,首先 记得导入svnkit这个jar包,拿到SVNLogEntry 后自己需要什么去里面拿就行了

你可能感兴趣的:(java 获取svn 提交记录)