# HG changeset patch # User Pierre-Yves David # Date 1357258045 -3600 # Node ID c38a62af000e3bd4a760066656751a8132c54c2c # Parent 493778b5fe9f98088af708c948f5f5ee73d8fc61 vfs: add a read only vfs This read only wrapper is intended to be used bundle repo. See follow up commit for details. diff -r 493778b5fe9f -r c38a62af000e mercurial/scmutil.py --- a/mercurial/scmutil.py Sat Dec 22 19:41:11 2012 +0100 +++ b/mercurial/scmutil.py Fri Jan 04 01:07:25 2013 +0100 @@ -382,6 +382,18 @@ filteropener = filtervfs +class readonlyvfs(abstractvfs, auditvfs): + '''Wrapper vfs preventing any writing.''' + + def __init__(self, vfs): + auditvfs.__init__(self, vfs) + + def __call__(self, path, mode='r', *args, **kw): + if mode not in ('r', 'rb'): + raise util.Abort('this vfs is read only') + return self.vfs(path, mode, *args, **kw) + + def canonpath(root, cwd, myname, auditor=None): '''return the canonical path of myname, given cwd and root''' if util.endswithsep(root):