# HG changeset patch # User Franz Glasner # Date 1538830722 -7200 # Node ID f4f13a25fe3ed015bc881c3be1768e28bb76aae5 # Parent d3c66ff43b4f514a8bdecf66a14b29c2e2c14270 Implement a --show command for timestamps. Because the --show command needs a "--rev" at times remove the short options for "--restore" and (for consistency) from "--save": "-r" would conflict with the common "-r" for requesting a revision. diff -r d3c66ff43b4f -r f4f13a25fe3e extensions/timestamps.py --- a/extensions/timestamps.py Sat Oct 06 11:54:58 2018 +0200 +++ b/extensions/timestamps.py Sat Oct 06 14:58:42 2018 +0200 @@ -108,8 +108,10 @@ @command( "timestamps", [ - ("s", "save", None, _("save modification times")), - ("r", "restore", None, _("restore modification times")), + ("", "save", None, _("save modification times")), + ("", "restore", None, _("restore modification times")), + ("", "show", None, _("show the contents of the timestamps database")), + ("r", "rev", "", _("the revision to use"), _("REV")), ("", "tsconfig", "", _("use an alternate configuration file"), _("TSCONFIG")), ("", "amend", None, _("amend the current database file instead of generating a fresh one")), ], @@ -124,7 +126,7 @@ """ opts = pycompat.byteskwargs(opts) - ctx = scmutil.revsingle(repo, None) + ctx = scmutil.revsingle(repo, opts.get("rev")) if not ctx: raise error.Abort(_("no Mercurial working directory")) if opts.get("save"): @@ -135,8 +137,12 @@ amend=opts.get("amend")) elif opts.get("restore"): restore_timestamps(ui, repo, ctx, tsconfig=opts.get("tsconfig")) + elif opts.get("show"): + fm = ui.formatter("timestamps", opts) + show_timestamps(ui, repo, ctx, fm, tsconfig=opts.get("tsconfig")) else: - raise error.Abort(_("must give a command: --save or --restore")) + raise error.Abort(_("must give a command:" + "--save or --restore or --show")) def save_timestamps(ui, @@ -176,6 +182,43 @@ ts = Timestamps.from_filename(repo.wjoin(TIMESTAMPS_DATABASE)) +def show_timestamps(ui, repo, ctx, fm, + tsconfig=None): + # + # NOTE: no need for a local repo here + # + matcher = gen_matcher(repo, ctx, tsconfig=tsconfig) + ts = Timestamps.from_filename(repo.wjoin(TIMESTAMPS_DATABASE)) + if ui.debugflag or ui.verbose: + files = iter(ts) + else: + files = iter(ts.files()) + ui.pager("timestamps") + with fm: + for f in files: + fm.startitem() + fm.condwrite(not ui.debugflag and ui.verbose and f == "/version/", + "version", + "version=%d\n", + ts[f]) + fm.condwrite(not ui.debugflag and ui.verbose and f == "/encoding/", + "encoding", + "encoding=%s\n", + ts[f]) + fm.condwrite(not ui.debugflag and ui.verbose and f.startswith("/comment-"), + "comment", + "%s\n", + ts[f]) + fm.condwrite(not ui.debugflag and ui.verbose and f.startswith("/-"), + "", + "\n") + fm.condwrite(ui.debugflag or not f.startswith("/"), + "date file", + "%s\t%s\n", + ts[f], + f) + + def gen_matcher(repo, ctx, tsconfig=None): """Read the configuration file and return a Mercurial matcher which is configured.