884 # form of hg.update. |
884 # form of hg.update. |
885 if update: |
885 if update: |
886 top = self.check_toppatch(repo) |
886 top = self.check_toppatch(repo) |
887 qp = self.qparents(repo, rev) |
887 qp = self.qparents(repo, rev) |
888 changes = repo.changelog.read(qp) |
888 changes = repo.changelog.read(qp) |
889 mf1 = repo.manifest.readflags(changes[0]) |
|
890 mmap = repo.manifest.read(changes[0]) |
889 mmap = repo.manifest.read(changes[0]) |
891 (c, a, r, d, u) = repo.changes(qp, top) |
890 (c, a, r, d, u) = repo.changes(qp, top) |
892 if d: |
891 if d: |
893 raise util.Abort("deletions found between repo revs") |
892 raise util.Abort("deletions found between repo revs") |
894 for f in c: |
893 for f in c: |
895 getfile(f, mmap[f]) |
894 getfile(f, mmap[f]) |
896 for f in r: |
895 for f in r: |
897 getfile(f, mmap[f]) |
896 getfile(f, mmap[f]) |
898 util.set_exec(repo.wjoin(f), mf1[f]) |
897 util.set_exec(repo.wjoin(f), mmap.execf[f]) |
899 repo.dirstate.update(c + r, 'n') |
898 repo.dirstate.update(c + r, 'n') |
900 for f in a: |
899 for f in a: |
901 try: os.unlink(repo.wjoin(f)) |
900 try: os.unlink(repo.wjoin(f)) |
902 except: raise |
901 except: raise |
903 try: os.removedirs(os.path.dirname(repo.wjoin(f))) |
902 try: os.removedirs(os.path.dirname(repo.wjoin(f))) |