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<SVNLogEntry> 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 后自己需要什么去里面拿就行了