如题,有人用java做过吗?
业务需求:
  项目中想统计SVN中(每天的提交次数、提交总次数、没人每天提交的次数,没人提交的总次数。)做成统计图呈现在web页面上。
问题:
  如何获取SVN的日志信息,并将其解析。有做过的人给点提示,最好给个Demo。

解决方案 »

  1.   

    你可以用svn的日志的啊,读出来,然后用来分析。
      

  2.   

    我知道呀,如何提取出来了?要给代码Demo,没做过这个东西,思路都清楚。
      

  3.   

    服务器软件像FishEye之类的可以做这个的,为什么还要自己用程序做呢?
      

  4.   

    我们做了一个度量系统,度量公司研发、生产各种指标,以统计图和表格的方式在web系统中呈现,其中一项就是度量 check in 次数(没人每天check in次数,平均每人每天check in次数。)
      

  5.   

    可以搞出来的,见过其他IT用到过这些数据,就是不知道如何弄?分析数据到很easy。
      

  6.   

    不要急,我刚试过这个,程序可以跑,能将SVN库的提交记录打印出来。你看看?
    http://wiki.svnkit.com/Printing_Out_Repository_History
      

  7.   

    以前用过一个SVNKIT的JAR工具包用JAVA实现SVN的CHECK IN、CHECK OUT等不知道对LZ有没有帮助
      

  8.   

    感谢各位!我找到这个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);
        }}