diff --git a/mercurial/narrowspec.py b/mercurial/narrowspec.py --- a/mercurial/narrowspec.py +++ b/mercurial/narrowspec.py @@ -190,12 +190,14 @@ def restorewcbackup(repo, backupname): if repository.NARROW_REQUIREMENT not in repo.requirements: return - util.rename(repo.vfs.join(backupname), repo.vfs.join(DIRSTATE_FILENAME)) + # It may not exist in old repos + if repo.vfs.exists(backupname): + util.rename(repo.vfs.join(backupname), repo.vfs.join(DIRSTATE_FILENAME)) def clearwcbackup(repo, backupname): if repository.NARROW_REQUIREMENT not in repo.requirements: return - repo.vfs.unlink(backupname) + repo.vfs.tryunlink(backupname) def restrictpatterns(req_includes, req_excludes, repo_includes, repo_excludes): r""" Restricts the patterns according to repo settings, diff --git a/tests/test-narrow-share.t b/tests/test-narrow-share.t --- a/tests/test-narrow-share.t +++ b/tests/test-narrow-share.t @@ -166,7 +166,7 @@ R d7/f Make it look like a repo from before narrow+share was supported $ rm .hg/narrowspec.dirstate - $ hg st + $ hg ci -Am test abort: working copy's narrowspec is stale (run 'hg tracked --update-working-copy') [255]