diff -r 2d54e7c1e69d -r 86e8187b721a mercurial/context.py --- a/mercurial/context.py Thu Jun 26 13:46:33 2008 -0500 +++ b/mercurial/context.py Thu Jun 26 13:46:34 2008 -0500 @@ -118,7 +118,7 @@ def filenode(self, path): return self._fileinfo(path)[0] - def fileflags(self, path): + def flags(self, path): try: return self._fileinfo(path)[1] except revlog.LookupError: @@ -237,9 +237,9 @@ def filerev(self): return self._filerev def filenode(self): return self._filenode - def fileflags(self): return self._changectx.fileflags(self._path) - def isexec(self): return 'x' in self.fileflags() - def islink(self): return 'l' in self.fileflags() + def flags(self): return self._changectx.flags(self._path) + def isexec(self): return 'x' in self.flags() + def islink(self): return 'l' in self.flags() def filelog(self): return self._filelog def rev(self): @@ -509,16 +509,14 @@ man = self._parents[0].manifest().copy() copied = self._repo.dirstate.copies() - is_exec = util.execfunc(self._repo.root, - lambda p: man.execf(copied.get(p,p))) - is_link = util.linkfunc(self._repo.root, - lambda p: man.linkf(copied.get(p,p))) + cf = lambda x: man.flags(copied.get(x, x)) + ff = self._repo.dirstate.flagfunc(cf) modified, added, removed, deleted, unknown = self._status[:5] for i, l in (("a", added), ("m", modified), ("u", unknown)): for f in l: man[f] = man.get(copied.get(f, f), nullid) + i try: - man.set(f, is_exec(f), is_link(f)) + man.set(f, ff(f)) except OSError: pass @@ -555,7 +553,7 @@ def children(self): return [] - def fileflags(self, path): + def flags(self, path): if '_manifest' in self.__dict__: try: return self._manifest.flags(path) @@ -565,12 +563,9 @@ pnode = self._parents[0].changeset()[0] orig = self._repo.dirstate.copies().get(path, path) node, flag = self._repo.manifest.find(pnode, orig) - is_link = util.linkfunc(self._repo.root, - lambda p: flag and 'l' in flag) - is_exec = util.execfunc(self._repo.root, - lambda p: flag and 'x' in flag) try: - return (is_link(path) and 'l' or '') + (is_exec(path) and 'x' or '') + ff = self._repo.dirstate.flagfunc(lambda x: flag or '') + return ff(path) except OSError: pass @@ -724,6 +719,7 @@ def clean(self): return self._status[5] def branch(self): return self._extra['branch'] def extra(self): return self._extra + def flags(self, f): return self[f].flags() def parents(self): """return contexts for each parent changeset""" @@ -750,7 +746,7 @@ def __str__(self): return "%s@%s" % (self.path(), self._changectx) def path(self): return self._path def data(self): return self._data - def fileflags(self): return self._flags + def flags(self): return self._flags def isexec(self): return 'x' in self._flags def islink(self): return 'l' in self._flags def renamed(self): return self._copied