mercurial/context.py
changeset 5407 d7e7902bb190
parent 5399 18f8abefdb2a
child 5435 d0c67b52ac01
equal deleted inserted replaced
5406:f11554a097c8 5407:d7e7902bb190
   424 
   424 
   425     def _buildmanifest(self):
   425     def _buildmanifest(self):
   426         """generate a manifest corresponding to the working directory"""
   426         """generate a manifest corresponding to the working directory"""
   427 
   427 
   428         man = self._parents[0].manifest().copy()
   428         man = self._parents[0].manifest().copy()
   429         is_exec = util.execfunc(self._repo.root, man.execf)
       
   430         is_link = util.linkfunc(self._repo.root, man.linkf)
       
   431         copied = self._repo.dirstate.copies()
   429         copied = self._repo.dirstate.copies()
       
   430         is_exec = util.execfunc(self._repo.root,
       
   431                                 lambda p: man.execf(copied.get(p,p)))
       
   432         is_link = util.linkfunc(self._repo.root,
       
   433                                 lambda p: man.linkf(copied.get(p,p)))
   432         modified, added, removed, deleted, unknown = self._status[:5]
   434         modified, added, removed, deleted, unknown = self._status[:5]
   433         for i, l in (("a", added), ("m", modified), ("u", unknown)):
   435         for i, l in (("a", added), ("m", modified), ("u", unknown)):
   434             for f in l:
   436             for f in l:
   435                 man[f] = man.get(copied.get(f, f), nullid) + i
   437                 man[f] = man.get(copied.get(f, f), nullid) + i
   436                 try:
   438                 try:
   480                 return self._manifest.flags(path)
   482                 return self._manifest.flags(path)
   481             except KeyError:
   483             except KeyError:
   482                 return ''
   484                 return ''
   483         
   485         
   484         pnode = self._parents[0].changeset()[0]
   486         pnode = self._parents[0].changeset()[0]
   485         node, flag = self._repo.manifest.find(pnode, path)
   487         orig = self._repo.dirstate.copies().get(path, path)
       
   488         node, flag = self._repo.manifest.find(pnode, orig)
   486         is_link = util.linkfunc(self._repo.root, lambda p: 'l' in flag)
   489         is_link = util.linkfunc(self._repo.root, lambda p: 'l' in flag)
   487         is_exec = util.execfunc(self._repo.root, lambda p: 'x' in flag)
   490         is_exec = util.execfunc(self._repo.root, lambda p: 'x' in flag)
   488         try:
   491         try:
   489             return (is_link(path) and 'l' or '') + (is_exec(path) and 'e' or '')
   492             return (is_link(path) and 'l' or '') + (is_exec(path) and 'e' or '')
   490         except OSError:
   493         except OSError: