diff -r fc5ba0ab7f45 -r 120be84f33de mercurial/cmdutil.py --- a/mercurial/cmdutil.py Wed Dec 06 15:29:17 2006 -0600 +++ b/mercurial/cmdutil.py Wed Dec 06 17:58:09 2006 -0600 @@ -554,6 +554,25 @@ return t return changeset_printer(ui, repo, patch, br, buffered) +def finddate(ui, repo, date): + """Find the tipmost changeset that matches the given date spec""" + df = util.matchdate(date + " to " + date) + get = util.cachefunc(lambda r: repo.changectx(r).changeset()) + changeiter, matchfn = walkchangerevs(ui, repo, [], get, {'rev':None}) + results = {} + for st, rev, fns in changeiter: + if st == 'add': + d = get(rev)[2] + if df(d[0]): + results[rev] = d + elif st == 'iter': + if rev in results: + ui.status("Found revision %s from %s\n" % + (rev, util.datestr(results[rev]))) + return str(rev) + + raise util.Abort(_("revision matching date not found")) + def walkchangerevs(ui, repo, pats, change, opts): '''Iterate over files and the revs they changed in.