Changeset 803 for trunk/lib


Ignore:
Timestamp:
Jul 11, 2009, 1:23:45 AM (12 years ago)
Author:
Peter Johansson
Message:

fixes #338 - partial cache now works

Location:
trunk/lib
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/AddStats.cc

    r703 r803  
    22
    33/*
    4   Copyright (C) 2008 Peter Johansson
     4  Copyright (C) 2008, 2009 Peter Johansson
    55
    66  This file is part of svndigest, http://dev.thep.lu.se/svndigest
     
    3333#include <string>
    3434#include <vector>
    35 
    36 //debug
    37 #include <iostream>
    3835
    3936namespace theplu{
     
    6966        if (*rev_iter==svn_blame.revision())
    7067          add(svn_blame.author(), *rev_iter, lt);
    71         // I dont trust blame and log behave consistent (stop-on-copy).
     68        // I dont trust blame and log behave consistently (stop-on-copy).
    7269        revs.insert(svn_blame.revision());
    7370        svn_blame.next_line();
  • trunk/lib/BlameStats.cc

    r703 r803  
    44  Copyright (C) 2005 Peter Johansson
    55  Copyright (C) 2006, 2007 Jari Häkkinen, Peter Johansson
     6  Copyright (C) 2009 Peter Johansson
    67
    78  This file is part of svndigest, http://dev.thep.lu.se/svndigest
     
    6364  void BlameStats::fill_in(Author2Vector& a2v, svn_revnum_t rev)
    6465  {
    65     assert(rev);
     66    if (rev==0)
     67      return;
    6668    for (std::set<std::string>::const_iterator iter(authors().begin());
    6769         iter!=authors().end(); ++iter) {
     
    9698    // filling in pristine revisions
    9799    RevSet::iterator rev_iter=revs.begin();
    98     for (svn_revnum_t rev = first_rev+1; rev<=revision(); ++rev){
     100    for (svn_revnum_t rev = first_rev; rev<=revision(); ++rev){
    99101      if (rev==*rev_iter)
    100102        ++rev_iter;
  • trunk/lib/ClassicStats.cc

    r703 r803  
    6161  void ClassicStats::do_parse(const std::string& path, svn_revnum_t rev)
    6262  {
     63    reset();
    6364    LineTypeParser parser(path);
    6465    SVNblame svn_blame(path);
    6566    while (svn_blame.valid()) {
    66       if (svn_blame.revision()>=rev) {
    67         add(svn_blame.author(), svn_blame.revision(),
    68             parser.parse(svn_blame.line()));
    69       }
     67      add(svn_blame.author(), svn_blame.revision(),
     68          parser.parse(svn_blame.line()));
    7069      svn_blame.next_line();
    7170    }
    72     accumulate_stats(rev);
     71    accumulate_stats();
    7372  }
    7473
  • trunk/lib/Stats.cc

    r768 r803  
    44  Copyright (C) 2005 Peter Johansson
    55  Copyright (C) 2006, 2007 Jari Häkkinen, Peter Johansson
    6   Copyright (C) 2008 Peter Johansson
     6  Copyright (C) 2008, 2009 Peter Johansson
    77
    88  This file is part of svndigest, http://dev.thep.lu.se/svndigest
     
    118118      vec.reserve(rev+1);
    119119      vec.resize(rev);
     120      assert(vec.size()+1<vec.max_size());
    120121      if (x) {
    121         assert(vec.size()+1<vec.max_size());
    122122        vec.push_back(n);
    123123      }
    124124      else {
    125         assert(vec.size()+1<vec.max_size());
    126125        vec.push_back(0);
    127126      }
     
    154153  {
    155154    std::vector<unsigned int> init(revision()+1);
    156     code_stats()["all"]=std::accumulate(code_stats().begin(),
    157                                         code_stats().end(), init,
    158                                         PairValuePlus<std::string,unsigned int>());
    159     comment_stats()["all"]=std::accumulate(comment_stats().begin(),
    160                                            comment_stats().end(), init,
    161                                            PairValuePlus<std::string,unsigned int>());
    162     other_stats()["all"]=std::accumulate(other_stats().begin(),
    163                                          other_stats().end(), init,
    164                                          PairValuePlus<std::string,unsigned int>());
    165     copyright_stats()["all"]=std::accumulate(copyright_stats().begin(),
    166                                              copyright_stats().end(), init,
    167                                              PairValuePlus<std::string,unsigned int>());
     155    for (int lt=0; lt <= 4; ++lt) {
     156      stats_[lt]["all"].clear();
     157      stats_[lt]["all"] =
     158        std::accumulate(stats_[lt].begin(),
     159                        stats_[lt].end(), init,
     160                        PairValuePlus<std::string,unsigned int>());
     161    }
    168162    VectorPlus<unsigned int> vp;
    169163    comment_or_copy_stats()["all"] =
     
    171165
    172166    total_stats()["all"] =
    173       vp(vp(code_stats()["all"], comment_or_copy_stats()["all"]),
    174             other_stats()["all"]);
     167      vp(vp(code_stats()["all"], comment_or_copy_stats()["all"]), 
     168         other_stats()["all"]);
    175169  }
    176170
     
    339333  void Stats::parse(const std::string& path, svn_revnum_t rev)
    340334  {
     335    // reset stats to zero for [rev, inf)
     336    for (size_t i=0; i<stats_.size(); ++i)
     337      for (A2VIter iter=stats_[i].begin(); iter!=stats_[i].end(); ++iter) {
     338        iter->second.resize(rev,0);
     339        iter->second.resize(revision(),0);
     340      }
    341341    do_parse(path, rev);
    342342    calc_comment_or_copy();
  • trunk/lib/StatsCollection.cc

    r752 r803  
    6363      svn_revnum_t cache_rev = i->second->load_cache(is);
    6464      if (cache_rev < i->second->last_changed_rev()) {
    65         cache_rev=0; // tmp hack to avoid partial cache
    6665        result = false;
    6766        // reset if load cache failed
Note: See TracChangeset for help on using the changeset viewer.