mercurial/localrepo.py
changeset 1258 1945754e466b
parent 1236 67a28636ea64
child 1260 4603eef60237
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):