Mercurial > public > mercurial-scm > hg-stable
diff mercurial/localrepo.py @ 1258:1945754e466b
Add file encoding/decoding support
author | mpm@selenic.com |
---|---|
date | Thu, 15 Sep 2005 02:59:16 -0500 |
parents | 67a28636ea64 |
children | 4603eef60237 |
line wrap: on
line diff
--- a/mercurial/localrepo.py Thu Sep 15 00:49:40 2005 -0500 +++ b/mercurial/localrepo.py Thu Sep 15 02:59:16 2005 -0500 @@ -33,6 +33,8 @@ self.changelog = changelog.changelog(self.opener) self.tagscache = None self.nodetagscache = None + self.encodepats = None + self.decodepats = None if create: os.mkdir(self.path) @@ -160,9 +162,37 @@ return self.wopener(f, mode) def wread(self, filename): - return self.wopener(filename, 'r').read() + if self.encodepats == None: + l = [] + for pat, cmd in self.ui.configitems("encode"): + mf = util.matcher("", "/", [pat], [], [])[1] + l.append((mf, cmd)) + self.encodepats = l + + data = self.wopener(filename, 'r').read() + + for mf, cmd in self.encodepats: + if mf(filename): + self.ui.debug("filtering %s through %s\n" % (filename, cmd)) + data = util.filter(data, cmd) + break + + return data def wwrite(self, filename, data, fd=None): + if self.decodepats == None: + l = [] + for pat, cmd in self.ui.configitems("decode"): + mf = util.matcher("", "/", [pat], [], [])[1] + l.append((mf, cmd)) + self.decodepats = l + + for mf, cmd in self.decodepats: + if mf(filename): + self.ui.debug("filtering %s through %s\n" % (filename, cmd)) + data = util.filter(data, cmd) + break + if fd: return fd.write(data) return self.wopener(filename, 'w').write(data)