comparison mercurial/localrepo.py @ 4003:616806f74f0f

symlinks: add _link checking function
author Matt Mackall <mpm@selenic.com>
date Fri, 29 Dec 2006 20:04:31 -0600
parents d7b9ec589546
children c83c35f2f4e2
comparison
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)