java提取SVN日志信息,统计SVN提交次数。。。 如题,有人用java做过吗?业务需求: 项目中想统计SVN中(每天的提交次数、提交总次数、没人每天提交的次数,没人提交的总次数。)做成统计图呈现在web页面上。问题: 如何获取SVN的日志信息,并将其解析。有做过的人给点提示,最好给个Demo。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你可以用svn的日志的啊,读出来,然后用来分析。 我知道呀,如何提取出来了?要给代码Demo,没做过这个东西,思路都清楚。 服务器软件像FishEye之类的可以做这个的,为什么还要自己用程序做呢? 我们做了一个度量系统,度量公司研发、生产各种指标,以统计图和表格的方式在web系统中呈现,其中一项就是度量 check in 次数(没人每天check in次数,平均每人每天check in次数。) 可以搞出来的,见过其他IT用到过这些数据,就是不知道如何弄?分析数据到很easy。 不要急,我刚试过这个,程序可以跑,能将SVN库的提交记录打印出来。你看看?http://wiki.svnkit.com/Printing_Out_Repository_History 以前用过一个SVNKIT的JAR工具包用JAVA实现SVN的CHECK IN、CHECK OUT等不知道对LZ有没有帮助 感谢各位!我找到这个svnkit库了,也做出来了,写了给例子分享给大家,一起学习哈package com.svn;import org.tmatesoft.svn.core.ISVNLogEntryHandler;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.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;/** * * @author xxx * */public class SVNFactory{ public SVNFactory(){ DAVRepositoryFactory.setup(); SVNRepositoryFactoryImpl.setup(); FSRepositoryFactory.setup(); } public void registerCollecter(String url, String[] targetPaths, String userName, String password, long startRevision, long endRevision){ SVNRepository repository = null; try { repository = SVNRepositoryFactory.create(SVNURL.parseURIDecoded(url)); ISVNAuthenticationManager authManager = SVNWCUtil. createDefaultAuthenticationManager(userName, password); repository.setAuthenticationManager(authManager); ISVNLogEntryHandler handler = new ISVNLogEntryHandler() { @Override public void handleLogEntry(SVNLogEntry logEntry) throws SVNException { System.out.println(logEntry.getAuthor()+" "+logEntry.getRevision()+" "+logEntry.getDate()+" "+logEntry.getMessage()+" "); } }; repository.log(targetPaths, startRevision, endRevision, true, true, handler); } catch (SVNException e) { System.err.println("Error while creating an SVNRepository for the location '" + url + "': " + e.getMessage()); return; } }}测试类:package com.svn;public class SVNFactoryTest{ private static String url = "http://szxsvn06-rd:6801/svn/CP_DataVoice_SVN"; private static String username = "pKF49035"; private static String password = "nK6pJ8wJ"; private static String[] tagpaths = new String[]{"trunk/Code/com.huawei.datavoice.web/WebContent/WEB-INF/jsp/version", "trunk/Code/com.huawei.datavoice.measurement/src/com/huawei/datavoice/measurement/collector"}; private static long startRevision = 0; private static long endRevision = -1; public static void main(String[] args){ SVNFactory factory = new SVNFactory(); factory.registerCollecter(url, tagpaths, username, password, startRevision, endRevision); }} 遍历级联到一个下拉框 最近在研究java的反射机制,我也“研究”了一天,谁给分享下这方面自己的理解 ibatis updateByExample相关 hibernate tomcat启动可以,但是不能连接!!! Xerces解析xml文件时出现错误,大家帮我看一看~ weblogic的问题? 请问IE浏览器->属性->高级里的"禁止脚本调试"的设置在注册表里的什么位置?????谢谢各位大侠. jbuilder7里更改xml配置文件后怎么没有了? httpclent reset 从.Net转Java,恳请各位给点建议 获取界面返回的json问题【求助】
http://wiki.svnkit.com/Printing_Out_Repository_History
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.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;
/**
*
* @author xxx
*
*/
public class SVNFactory
{
public SVNFactory(){
DAVRepositoryFactory.setup();
SVNRepositoryFactoryImpl.setup();
FSRepositoryFactory.setup();
}
public void registerCollecter(String url, String[] targetPaths, String userName, String password,
long startRevision, long endRevision){
SVNRepository repository = null;
try
{
repository = SVNRepositoryFactory.create(SVNURL.parseURIDecoded(url));
ISVNAuthenticationManager authManager = SVNWCUtil.
createDefaultAuthenticationManager(userName, password);
repository.setAuthenticationManager(authManager);
ISVNLogEntryHandler handler = new ISVNLogEntryHandler() {
@Override
public void handleLogEntry(SVNLogEntry logEntry)
throws SVNException {
System.out.println(logEntry.getAuthor()+" "+logEntry.getRevision()+" "+logEntry.getDate()+" "+logEntry.getMessage()+" ");
} };
repository.log(targetPaths, startRevision, endRevision, true, true, handler);
}
catch (SVNException e)
{
System.err.println("Error while creating an SVNRepository for the location '"
+ url + "': " + e.getMessage());
return;
}
}
}测试类:package com.svn;public class SVNFactoryTest
{
private static String url = "http://szxsvn06-rd:6801/svn/CP_DataVoice_SVN";
private static String username = "pKF49035";
private static String password = "nK6pJ8wJ";
private static String[] tagpaths = new String[]{"trunk/Code/com.huawei.datavoice.web/WebContent/WEB-INF/jsp/version",
"trunk/Code/com.huawei.datavoice.measurement/src/com/huawei/datavoice/measurement/collector"};
private static long startRevision = 0;
private static long endRevision = -1;
public static void main(String[] args){
SVNFactory factory = new SVNFactory();
factory.registerCollecter(url, tagpaths, username, password, startRevision, endRevision);
}}