자바 svn 제출 기록 가 져 오기

2751 단어
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 가방 을 가 져 오 는 것 을 기억 하 세 요. SVN LogEntry 를 받 은 후에 자신 이 필요 로 하 는 것 을 안 으로 가 져 가면 됩 니 다.

좋은 웹페이지 즐겨찾기