Mercurial > public > mercurial-scm > hg
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) |