diff --git a/mercurial/changegroup.py b/mercurial/changegroup.py
index a57dcd11be3407518cccc24d0f3a0d2b4c5301cd_bWVyY3VyaWFsL2NoYW5nZWdyb3VwLnB5..5b58714e97edbbd1e09f7717cf6564e0191d8f57_bWVyY3VyaWFsL2NoYW5nZWdyb3VwLnB5 100644
--- a/mercurial/changegroup.py
+++ b/mercurial/changegroup.py
@@ -214,7 +214,7 @@
             return d
         return readexactly(self._fh, n)
 
-def readbundle(fh, fname):
+def readbundle(fh, fname, vfs=None):
     header = readexactly(fh, 6)
 
     if not fname:
@@ -222,6 +222,8 @@
         if not header.startswith('HG') and header.startswith('\0'):
             fh = headerlessfixup(fh, header)
             header = "HG10UN"
+    elif vfs:
+        fname = vfs.join(fname)
 
     magic, version, alg = header[0:2], header[2:4], header[4:6]