diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -6014,7 +6014,18 @@ def rename(ui, repo, *pats, **opts): Returns 0 on success, 1 if errors are encountered. """ opts = pycompat.byteskwargs(opts) - with repo.wlock(): + context = repo.dirstate.changing_files + rev = opts.get(b'at_rev') + ctx = None + if rev: + ctx = logcmdutil.revsingle(repo, rev) + if ctx.rev() is not None: + + def context(repo): + return util.nullcontextmanager() + + opts[b'at_rev'] = ctx.rev() + with repo.wlock(), context(repo): return cmdutil.copy(ui, repo, pats, opts, rename=True)