Mercurial > public > mercurial-scm > hg
comparison 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 |
comparison
equal
deleted
inserted
replaced
1256:8054fdb0b145 | 1258:1945754e466b |
---|---|
31 self.wopener = util.opener(self.root) | 31 self.wopener = util.opener(self.root) |
32 self.manifest = manifest.manifest(self.opener) | 32 self.manifest = manifest.manifest(self.opener) |
33 self.changelog = changelog.changelog(self.opener) | 33 self.changelog = changelog.changelog(self.opener) |
34 self.tagscache = None | 34 self.tagscache = None |
35 self.nodetagscache = None | 35 self.nodetagscache = None |
36 self.encodepats = None | |
37 self.decodepats = None | |
36 | 38 |
37 if create: | 39 if create: |
38 os.mkdir(self.path) | 40 os.mkdir(self.path) |
39 os.mkdir(self.join("data")) | 41 os.mkdir(self.join("data")) |
40 f = self.opener("hgrc", "w") | 42 f = self.opener("hgrc", "w") |
158 | 160 |
159 def wfile(self, f, mode='r'): | 161 def wfile(self, f, mode='r'): |
160 return self.wopener(f, mode) | 162 return self.wopener(f, mode) |
161 | 163 |
162 def wread(self, filename): | 164 def wread(self, filename): |
163 return self.wopener(filename, 'r').read() | 165 if self.encodepats == None: |
166 l = [] | |
167 for pat, cmd in self.ui.configitems("encode"): | |
168 mf = util.matcher("", "/", [pat], [], [])[1] | |
169 l.append((mf, cmd)) | |
170 self.encodepats = l | |
171 | |
172 data = self.wopener(filename, 'r').read() | |
173 | |
174 for mf, cmd in self.encodepats: | |
175 if mf(filename): | |
176 self.ui.debug("filtering %s through %s\n" % (filename, cmd)) | |
177 data = util.filter(data, cmd) | |
178 break | |
179 | |
180 return data | |
164 | 181 |
165 def wwrite(self, filename, data, fd=None): | 182 def wwrite(self, filename, data, fd=None): |
183 if self.decodepats == None: | |
184 l = [] | |
185 for pat, cmd in self.ui.configitems("decode"): | |
186 mf = util.matcher("", "/", [pat], [], [])[1] | |
187 l.append((mf, cmd)) | |
188 self.decodepats = l | |
189 | |
190 for mf, cmd in self.decodepats: | |
191 if mf(filename): | |
192 self.ui.debug("filtering %s through %s\n" % (filename, cmd)) | |
193 data = util.filter(data, cmd) | |
194 break | |
195 | |
166 if fd: | 196 if fd: |
167 return fd.write(data) | 197 return fd.write(data) |
168 return self.wopener(filename, 'w').write(data) | 198 return self.wopener(filename, 'w').write(data) |
169 | 199 |
170 def transaction(self): | 200 def transaction(self): |