mercurial/context.py
changeset 3996 c190df14338c
parent 3966 b4eaa68dea1b
child 4002 d7b9ec589546
equal deleted inserted replaced
3995:a4e79f86d304 3996:c190df14338c
   376 
   376 
   377     def _buildmanifest(self):
   377     def _buildmanifest(self):
   378         """generate a manifest corresponding to the working directory"""
   378         """generate a manifest corresponding to the working directory"""
   379 
   379 
   380         man = self._parents[0].manifest().copy()
   380         man = self._parents[0].manifest().copy()
       
   381         is_exec = util.execfunc(self._repo.root, man.execf)
   381         copied = self._repo.dirstate.copies()
   382         copied = self._repo.dirstate.copies()
   382         modified, added, removed, deleted, unknown = self._status[:5]
   383         modified, added, removed, deleted, unknown = self._status[:5]
   383         for i, l in (("a", added), ("m", modified), ("u", unknown)):
   384         for i, l in (("a", added), ("m", modified), ("u", unknown)):
   384             for f in l:
   385             for f in l:
   385                 man[f] = man.get(copied.get(f, f), nullid) + i
   386                 man[f] = man.get(copied.get(f, f), nullid) + i
   386                 try:
   387                 try:
   387                     man.set(f, util.is_exec(self._repo.wjoin(f), man.execf(f)))
   388                     man.set(f, is_exec(f))
   388                 except OSError:
   389                 except OSError:
   389                     pass
   390                     pass
   390 
   391 
   391         for f in deleted + removed:
   392         for f in deleted + removed:
   392             if f in man:
   393             if f in man: