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