Show More
@@ -554,6 +554,25 b' def show_changeset(ui, repo, opts, buffe' | |||
|
554 | 554 | return t |
|
555 | 555 | return changeset_printer(ui, repo, patch, br, buffered) |
|
556 | 556 | |
|
557 | def finddate(ui, repo, date): | |
|
558 | """Find the tipmost changeset that matches the given date spec""" | |
|
559 | df = util.matchdate(date + " to " + date) | |
|
560 | get = util.cachefunc(lambda r: repo.changectx(r).changeset()) | |
|
561 | changeiter, matchfn = walkchangerevs(ui, repo, [], get, {'rev':None}) | |
|
562 | results = {} | |
|
563 | for st, rev, fns in changeiter: | |
|
564 | if st == 'add': | |
|
565 | d = get(rev)[2] | |
|
566 | if df(d[0]): | |
|
567 | results[rev] = d | |
|
568 | elif st == 'iter': | |
|
569 | if rev in results: | |
|
570 | ui.status("Found revision %s from %s\n" % | |
|
571 | (rev, util.datestr(results[rev]))) | |
|
572 | return str(rev) | |
|
573 | ||
|
574 | raise util.Abort(_("revision matching date not found")) | |
|
575 | ||
|
557 | 576 | def walkchangerevs(ui, repo, pats, change, opts): |
|
558 | 577 | '''Iterate over files and the revs they changed in. |
|
559 | 578 |
@@ -222,6 +222,7 b' def backout(ui, repo, rev, **opts):' | |||
|
222 | 222 | parent = p1 |
|
223 | 223 | hg.clean(repo, node, show_stats=False) |
|
224 | 224 | revert_opts = opts.copy() |
|
225 | revert_opts['date'] = None | |
|
225 | 226 | revert_opts['all'] = True |
|
226 | 227 | revert_opts['rev'] = hex(parent) |
|
227 | 228 | revert(ui, repo, **revert_opts) |
@@ -1596,7 +1597,7 b' def manifest(ui, repo, rev=None):' | |||
|
1596 | 1597 | ui.write("%3s " % (m.execf(f) and "755" or "644")) |
|
1597 | 1598 | ui.write("%s\n" % f) |
|
1598 | 1599 | |
|
1599 | def merge(ui, repo, node=None, force=None, branch=None): | |
|
1600 | def merge(ui, repo, node=None, force=None, branch=None, date=None): | |
|
1600 | 1601 | """Merge working directory with another revision |
|
1601 | 1602 | |
|
1602 | 1603 | Merge the contents of the current working directory and the |
@@ -1943,6 +1944,11 b' def revert(ui, repo, *pats, **opts):' | |||
|
1943 | 1944 | If no arguments are given, no files are reverted. |
|
1944 | 1945 | """ |
|
1945 | 1946 | |
|
1947 | if opts["date"]: | |
|
1948 | if opts["rev"]: | |
|
1949 | raise util.Abort(_("you can't specify a revision and a date")) | |
|
1950 | opts["rev"] = cmdutil.finddate(ui, repo, opts["date"]) | |
|
1951 | ||
|
1946 | 1952 | if not pats and not opts['all']: |
|
1947 | 1953 | raise util.Abort(_('no files or directories specified; ' |
|
1948 | 1954 | 'use --all to revert the whole repo')) |
@@ -2297,7 +2303,7 b' def unbundle(ui, repo, fname, **opts):' | |||
|
2297 | 2303 | modheads = repo.addchangegroup(gen, 'unbundle', 'bundle:' + fname) |
|
2298 | 2304 | return postincoming(ui, repo, modheads, opts['update']) |
|
2299 | 2305 | |
|
2300 | def update(ui, repo, node=None, clean=False, branch=None): | |
|
2306 | def update(ui, repo, node=None, clean=False, branch=None, date=None): | |
|
2301 | 2307 | """update or merge working directory |
|
2302 | 2308 | |
|
2303 | 2309 | Update the working directory to the specified revision. |
@@ -2312,6 +2318,11 b' def update(ui, repo, node=None, clean=Fa' | |||
|
2312 | 2318 | By default, update will refuse to run if doing so would require |
|
2313 | 2319 | merging or discarding local changes. |
|
2314 | 2320 | """ |
|
2321 | if date: | |
|
2322 | if node: | |
|
2323 | raise util.Abort(_("you can't specify a revision and a date")) | |
|
2324 | node = cmdutil.finddate(ui, repo, date) | |
|
2325 | ||
|
2315 | 2326 | node = _lookup(repo, node, branch) |
|
2316 | 2327 | if clean: |
|
2317 | 2328 | return hg.clean(repo, node) |
@@ -2676,6 +2687,7 b' table = {' | |||
|
2676 | 2687 | "^revert": |
|
2677 | 2688 | (revert, |
|
2678 | 2689 | [('a', 'all', None, _('revert all changes when no arguments given')), |
|
2690 | ('d', 'date', '', _('tipmost revision matching date')), | |
|
2679 | 2691 | ('r', 'rev', '', _('revision to revert to')), |
|
2680 | 2692 | ('', 'no-backup', None, _('do not save backup copies of files')), |
|
2681 | 2693 | ] + walkopts + dryrunopts, |
@@ -2746,7 +2758,8 b' table = {' | |||
|
2746 | 2758 | (update, |
|
2747 | 2759 | [('b', 'branch', '', |
|
2748 | 2760 | _('checkout the head of a specific branch (DEPRECATED)')), |
|
2749 |
('C', 'clean', None, _('overwrite locally modified files')) |
|
|
2761 | ('C', 'clean', None, _('overwrite locally modified files')), | |
|
2762 | ('d', 'date', '', _('tipmost revision matching date'))], | |
|
2750 | 2763 | _('hg update [-C] [REV]')), |
|
2751 | 2764 | "verify": (verify, [], _('hg verify')), |
|
2752 | 2765 | "version": (version_, [], _('hg version')), |
General Comments 0
You need to be logged in to leave comments.
Login now