diff --git a/hgext/mq.py b/hgext/mq.py --- a/hgext/mq.py +++ b/hgext/mq.py @@ -2400,7 +2400,7 @@ def rename(ui, repo, patch, name=None, * os.makedirs(destdir) util.rename(q.join(patch), absdest) r = q.qrepo() - if r: + if r and patch in r.dirstate: wctx = r[None] wlock = r.wlock() try: diff --git a/tests/test-mq-qrename.t b/tests/test-mq-qrename.t --- a/tests/test-mq-qrename.t +++ b/tests/test-mq-qrename.t @@ -81,3 +81,16 @@ Test overlapping renames (issue2388) A patchc R patcha $ cd .. + +Test renames with mq repo (issue2097) + + $ hg init issue2097 + $ cd issue2097 + $ hg qnew p0 + $ (cd .hg/patches && hg init) + $ hg qren p0 p1 + $ hg debugstate --mq + $ hg ci --mq -mq0 + nothing changed + [1] + $ cd ..