comparison mercurial/context.py @ 5407:d7e7902bb190

Fix workingctx exec/link bit of copies on non-supporting systems
author Patrick Mezard <pmezard@gmail.com>
date Sun, 07 Oct 2007 15:07:35 +0200
parents 18f8abefdb2a
children d0c67b52ac01
comparison
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: