--- cmd_diff_log.cc 2007-10-25 18:40:15.000000000 -0400 +++ cmd_diff_log.cc 2007-11-17 03:22:21.000000000 -0500 @@ -622,7 +622,7 @@ CMD(log, "log", "", CMD_REF(informative) | options::opts::from | options::opts::to | options::opts::brief | options::opts::diffs | options::opts::no_merges | options::opts::no_files - | options::opts::no_graph) + | options::opts::no_graph | options::opts::by) { if (app.opts.from.size() == 0) app.require_workspace("try passing a --from revision to start at"); @@ -842,6 +842,25 @@ CMD(log, "log", "", CMD_REF(informative) if (app.opts.no_merges && rev.is_merge_node()) print_this = false; + if (print_this && app.opts.by.size() > 0) + { + vector< revision > certs; + app.get_project().get_revision_certs_by_name(rid, author_name, certs); + + print_this = false; + for (vector< revision >::const_iterator i = certs.begin(); + i != certs.end(); ++i) + { + cert_value tv; + decode_base64(i->inner().value, tv); + if (app.opts.by.find(tv()) != app.opts.by.end()) + { + print_this = true; + break; + } + } + } + set interesting; // if rid is not marked we can jump directly to the marked ancestors, // otherwise we need to visit the parents --- options_list.hh 2007-10-25 18:40:21.000000000 -0400 +++ options_list.hh 2007-11-17 03:16:33.000000000 -0500 @@ -306,6 +306,14 @@ OPT(last, "last", long, -1, } #endif +OPT(by, "by", std::set, , + gettext_noop("show log outputs for the specified author(s) only")) +#ifdef option_bodies +{ + by.insert(arg); +} +#endif + OPTION(globals, log, true, "log", gettext_noop("file to write the log to")) #ifdef option_bodies {