# HG changeset patch # User mpm@selenic.com # Date 1124234564 28800 # Node ID fe69ecd3437cfc895e39e94cc36e0ef52330ed43 # Parent 7f3f55903496afd5e82ea631c0a9a0828c872297 hg cat: accept changeset hashes diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -455,7 +455,14 @@ def cat(ui, repo, file1, rev=None, **opt """output the latest or given revision of a file""" r = repo.file(relpath(repo, [file1])[0]) if rev: - n = r.lookup(rev) + try: + # assume all revision numbers are for changesets + n = repo.lookup(rev) + change = repo.changelog.read(n) + m = repo.manifest.read(change[0]) + n = m[relpath(repo, [file1])[0]] + except hg.RepoError, KeyError: + n = r.lookup(rev) else: n = r.tip() fp = make_file(repo, r, opts['output'], node=n)