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: |