diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -783,7 +783,7 @@ class localrepository(object): def wread(self, filename): if self._link(filename): - data = os.readlink(self.wjoin(filename)) + data = self.wvfs.readlink(filename) else: data = self.wopener.read(filename) return self._filter(self._encodefilterpats, filename, data) diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py --- a/mercurial/scmutil.py +++ b/mercurial/scmutil.py @@ -260,6 +260,9 @@ class abstractvfs(object): def rename(self, src, dst): return util.rename(self.join(src), self.join(dst)) + def readlink(self, path): + return os.readlink(self.join(path)) + def stat(self, path=None): return os.stat(self.join(path))