mercurial/localrepo.py
changeset 4003 616806f74f0f
parent 4002 d7b9ec589546
child 4004 c83c35f2f4e2
equal deleted inserted replaced
4002:d7b9ec589546 4003:616806f74f0f
   118         self.branchcache = None
   118         self.branchcache = None
   119         self.nodetagscache = None
   119         self.nodetagscache = None
   120         self.encodepats = None
   120         self.encodepats = None
   121         self.decodepats = None
   121         self.decodepats = None
   122         self.transhandle = None
   122         self.transhandle = None
       
   123 
       
   124         self._link = lambda x: False
       
   125         if util.checklink(self.root):
       
   126             r = self.root # avoid circular reference in lambda
       
   127             self._link = lambda x: util.is_link(os.path.join(r, x))
   123 
   128 
   124         self.dirstate = dirstate.dirstate(self.opener, self.ui, self.root)
   129         self.dirstate = dirstate.dirstate(self.opener, self.ui, self.root)
   125 
   130 
   126     def url(self):
   131     def url(self):
   127         return 'file:' + self.root
   132         return 'file:' + self.root
   484             for pat, cmd in self.ui.configitems("encode"):
   489             for pat, cmd in self.ui.configitems("encode"):
   485                 mf = util.matcher(self.root, "", [pat], [], [])[1]
   490                 mf = util.matcher(self.root, "", [pat], [], [])[1]
   486                 l.append((mf, cmd))
   491                 l.append((mf, cmd))
   487             self.encodepats = l
   492             self.encodepats = l
   488 
   493 
   489         data = self.wopener(filename, 'r').read()
   494         if self._link(filename):
       
   495             data = os.readlink(self.wjoin(filename))
       
   496         else:
       
   497             data = self.wopener(filename, 'r').read()
   490 
   498 
   491         for mf, cmd in self.encodepats:
   499         for mf, cmd in self.encodepats:
   492             if mf(filename):
   500             if mf(filename):
   493                 self.ui.debug(_("filtering %s through %s\n") % (filename, cmd))
   501                 self.ui.debug(_("filtering %s through %s\n") % (filename, cmd))
   494                 data = util.filter(data, cmd)
   502                 data = util.filter(data, cmd)
   717         for f in commit:
   725         for f in commit:
   718             self.ui.note(f + "\n")
   726             self.ui.note(f + "\n")
   719             try:
   727             try:
   720                 new[f] = self.filecommit(f, m1, m2, linkrev, tr, changed)
   728                 new[f] = self.filecommit(f, m1, m2, linkrev, tr, changed)
   721                 m1.set(f, is_exec(f), is_link(f))
   729                 m1.set(f, is_exec(f), is_link(f))
   722             except IOError:
   730             except OSError:
   723                 if use_dirstate:
   731                 if use_dirstate:
   724                     self.ui.warn(_("trouble committing %s!\n") % f)
   732                     self.ui.warn(_("trouble committing %s!\n") % f)
   725                     raise
   733                     raise
   726                 else:
   734                 else:
   727                     remove.append(f)
   735                     remove.append(f)