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