552 self.dirstate.forget([f]) |
552 self.dirstate.forget([f]) |
553 elif f not in self.dirstate: |
553 elif f not in self.dirstate: |
554 self.ui.warn(_("%s not tracked!\n") % f) |
554 self.ui.warn(_("%s not tracked!\n") % f) |
555 else: |
555 else: |
556 self.dirstate.update([f], "r") |
556 self.dirstate.update([f], "r") |
|
557 |
|
558 def undelete(self, list): |
|
559 pl = self.dirstate.parents() |
|
560 if pl[1] != nullid: |
|
561 self.ui.warn("aborting: outstanding uncommitted merges\n") |
|
562 return 1 |
|
563 p = pl[0] |
|
564 mn = self.changelog.read(p)[0] |
|
565 mf = self.manifest.readflags(mn) |
|
566 m = self.manifest.read(mn) |
|
567 for f in list: |
|
568 if self.dirstate.state(f) not in "r": |
|
569 self.ui.warn("%s not removed!\n" % f) |
|
570 else: |
|
571 t = self.file(f).read(m[f]) |
|
572 try: |
|
573 self.wwrite(f, t) |
|
574 except IOError, e: |
|
575 if e.errno != errno.ENOENT: |
|
576 raise |
|
577 os.makedirs(os.path.dirname(self.wjoin(f))) |
|
578 self.wwrite(f, t) |
|
579 util.set_exec(self.wjoin(f), mf[f]) |
|
580 self.dirstate.update([f], "n") |
557 |
581 |
558 def copy(self, source, dest): |
582 def copy(self, source, dest): |
559 p = self.wjoin(dest) |
583 p = self.wjoin(dest) |
560 if not os.path.exists(p): |
584 if not os.path.exists(p): |
561 self.ui.warn(_("%s does not exist!\n") % dest) |
585 self.ui.warn(_("%s does not exist!\n") % dest) |