Changeset 1537


Ignore:
Timestamp:
Oct 7, 2012, 9:37:33 AM (9 years ago)
Author:
Peter Johansson
Message:

refs #334. Implement option --update for files

Location:
trunk
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/DirectoryPrinter.cc

    r1515 r1537  
    7070
    7171
     72  std::string DirectoryPrinter::out_name(const std::string& stats_type,
     73                                         const std::string& user,
     74                                         const std::string& line_type) const
     75  {
     76    assert(0 && "implement me, please!");
     77    return "";
     78  }
     79
     80
    7281  std::string DirectoryPrinter::output_path(void) const
    7382  {
     
    8695                             const SVNlog& log) const
    8796  {
    88 
    8997    const Stats& stats = directory_.stats_[stats_type];
    9098    std::string imagedir = stats_type+"/"+"images/"+line_type;
  • trunk/lib/DirectoryPrinter.h

    r1515 r1537  
    6565    const Node& node(void) const;
    6666
     67    std::string out_name(const std::string& stats_type,
     68                         const std::string& user,
     69                         const std::string& line_type) const;
     70
    6771    void print_core(bool verbose=false) const;
    6872
  • trunk/lib/FilePrinter.cc

    r1515 r1537  
    7070  {
    7171    return file_;
     72  }
     73
     74
     75  std::string FilePrinter::out_name(const std::string& stats_type,
     76                                    const std::string& user,
     77                                    const std::string& line_type) const
     78  {
     79    std::string lpath = node().local_path();
     80    if (lpath.empty())
     81      lpath = "index";
     82    return stats_type + "/" + user + "/" + line_type + "/" + lpath + ".html";
    7283  }
    7384
     
    180191    std::ofstream os(blame_output_file_name().c_str());
    181192    assert(os.good());
    182     print_html_start(os, "svndigest", file_.level_+1);
     193    print_html_start(os, "svndigest", file_.level_+1,file_.last_changed_rev());
    183194    print_blame(os);
    184195    print_footer(os);
     
    188199
    189200  void FilePrinter::print_core(const std::string& stats_type,
    190                         const std::string& user, const std::string& line_type,
    191                         const SVNlog& log) const
     201                               const std::string& user,
     202                               const std::string& line_type,
     203                               const SVNlog& log) const
    192204  {
    193205    std::string lpath = node().local_path();
    194206    if (lpath.empty())
    195207      lpath = "index";
    196     std::string outpath = stats_type+"/"+user+"/"+line_type+"/"+lpath;
    197208    std::string imagefile = stats_type+"/"+"images/"+line_type+"/"+lpath;
    198     std::string html_name(outpath + ".html");
     209    std::string html_name = out_name(stats_type, user, line_type);
    199210    mkdir_p(directory_name(html_name));
    200211    mkdir_p(directory_name(imagefile));
    201212    std::ofstream os(html_name.c_str());
    202213    assert(os);
    203     print_header(os, node().name(), file_.level_+3, user, line_type, lpath+".html",
    204                  stats_type);
     214    print_header(os, node().name(), file_.level_+3, user, line_type,
     215                 lpath+".html", stats_type, file_.last_changed_rev());
    205216    path_anchor(os);
    206217
  • trunk/lib/FilePrinter.h

    r1515 r1537  
    6666    bool blame(void) const;
    6767
     68    const Node& node(void) const;
     69
     70    std::string out_name(const std::string& stats_type,
     71                         const std::string& user,
     72                         const std::string& line_type) const;
    6873    /**
    6974       @brief Print blame output
     
    8085                    const std::string& line_type, const SVNlog&) const;
    8186
    82     const Node& node(void) const;
    83 
    8487    const File& file_;
    8588
  • trunk/lib/NodePrinter.cc

    r1515 r1537  
    5656  {
    5757    return node().output_dir_;
     58  }
     59
     60
     61  svn_revnum_t NodePrinter::output_revision(void) const
     62  {
     63    std::ifstream is(out_name("classic", "all", "total").c_str());
     64    if (!is.good())
     65      return 0;
     66    std::string line;
     67    // search first three lines for 'revision: '
     68    std::string str("revision: ");
     69    for (size_t i=0; i<3; ++i) {
     70      getline(is, line);
     71      size_t pos = line.find(str);
     72      if (pos==std::string::npos)
     73        continue;
     74      std::istringstream ss(line.substr(pos+str.size()));
     75      svn_revnum_t result = 0;
     76      ss >> result;
     77      return result;
     78    }
     79    is.close();
     80    return 0;
    5881  }
    5982
     
    84107
    85108
    86   void NodePrinter::print(const bool verbose) const
     109  void NodePrinter::print(const bool verbose, bool update) const
    87110  {
    88111    if (node().svndigest_ignore())
     
    90113    if (!Configuration::instance().output_file() && !node().dir())
    91114      return;
     115    if (update && output_revision() >= node().last_changed_rev())
     116        return;
    92117    if (verbose)
    93118      std::cout << "Printing output for '" << node().path_ << "'" << std::endl;
  • trunk/lib/NodePrinter.h

    r1515 r1537  
    7575    /// Function printing HTML in current working directory
    7676    ///
    77     void print(const bool verbose=false) const;
     77    void print(const bool verbose=false, bool update=false) const;
    7878
    7979    void print_author_summary(std::ostream&,
     
    9696    virtual const Node& node(void) const=0;
    9797
     98    /**
     99       \return revision in output from previous run
     100     */
     101    svn_revnum_t output_revision(void) const;
     102
    98103    virtual void print_core(bool verbose=false) const=0;
    99104
     
    107112                            const SVNlog&) const=0;
    108113
     114    virtual std::string out_name(const std::string& stats_type,
     115                                 const std::string& user,
     116                                 const std::string& line_type) const=0;
     117
    109118  };
    110119
  • trunk/lib/SvndigestVisitor.cc

    r1535 r1537  
    7878      if (!file.svndigest_ignore()) {
    7979        FilePrinter fp(file);
    80         fp.print(verbose_);
     80        fp.print(verbose_, update_);
    8181      }
    8282    }
  • trunk/lib/html_utility.cc

    r1515 r1537  
    111111  void print_header(std::ostream& os, std::string title, unsigned int level,
    112112                    std::string user, std::string item, std::string path,
    113                     const std::string& stats)
    114   {
    115     print_html_start(os, title, level);
     113                    const std::string& stats, svn_revnum_t rev)
     114  {
     115    print_html_start(os, title, level, rev);
    116116    os << "<div id=\"menu\">"
    117117       << "<ul>\n<li></li>\n";
     
    203203
    204204  void print_html_start(std::ostream& os, const std::string& title,
    205                         unsigned int level)
     205                        unsigned int level, svn_revnum_t rev)
    206206  {
    207207    os << "<!-- Generated by " << PACKAGE_STRING << "-->\n";
     208    if (rev)
     209      os << "<!-- revision: " << rev << " -->\n";
    208210    os << "<!DOCTYPE html\n"
    209211       << "PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n"
  • trunk/lib/html_utility.h

    r1515 r1537  
    6767  /// \param path current path
    6868  /// \param stats which stats are we in
     69  /// \param rev revision output page reflects
     70  ///
    6971  void print_header(std::ostream& os, std::string name, unsigned int level,
    7072                    std::string user, std::string item, std::string path,
    71                     const std::string& stats);
     73                    const std::string& stats, svn_revnum_t rev=0);
    7274
    7375
     
    8082   */
    8183  void print_html_start(std::ostream& os, const std::string& title,
    82                         unsigned int level);
     84                        unsigned int level, svn_revnum_t rev=0);
    8385
    8486
  • trunk/test/update_test.sh

    r1534 r1537  
    3333test -s stderr && exit_fail
    3434
     35head $targetdir/toy_project/classic/all/total/bootstrap.html \
     36| grep 'revision:' || exit_fail
     37
    3538# update to latest rev
    3639$SVN update -r 71 $rootdir/lib
Note: See TracChangeset for help on using the changeset viewer.