comparison hgext/mq.py @ 5140:f6c520fd70cf

mq: teach qpop about symlinks
author Bryan O'Sullivan <bos@serpentine.com>
date Thu, 09 Aug 2007 20:16:00 -0700
parents 06154aff2b1a
children f8aa16533ddf
comparison
equal deleted inserted replaced
5139:49554ba98951 5140:f6c520fd70cf
808 return ret[0] 808 return ret[0]
809 finally: 809 finally:
810 del wlock 810 del wlock
811 811
812 def pop(self, repo, patch=None, force=False, update=True, all=False): 812 def pop(self, repo, patch=None, force=False, update=True, all=False):
813 def getfile(f, rev): 813 def getfile(f, rev, flags):
814 t = repo.file(f).read(rev) 814 t = repo.file(f).read(rev)
815 repo.wfile(f, "w").write(t) 815 repo.wwrite(f, t, flags)
816 816
817 wlock = repo.wlock() 817 wlock = repo.wlock()
818 try: 818 try:
819 if patch: 819 if patch:
820 # index, rev, patch 820 # index, rev, patch
868 mmap = repo.manifest.read(changes[0]) 868 mmap = repo.manifest.read(changes[0])
869 m, a, r, d, u = repo.status(qp, top)[:5] 869 m, a, r, d, u = repo.status(qp, top)[:5]
870 if d: 870 if d:
871 raise util.Abort("deletions found between repo revs") 871 raise util.Abort("deletions found between repo revs")
872 for f in m: 872 for f in m:
873 getfile(f, mmap[f]) 873 getfile(f, mmap[f], mmap.flags(f))
874 for f in r: 874 for f in r:
875 getfile(f, mmap[f]) 875 getfile(f, mmap[f], mmap.flags(f))
876 util.set_exec(repo.wjoin(f), mmap.execf(f))
877 for f in m + r: 876 for f in m + r:
878 repo.dirstate.normal(f) 877 repo.dirstate.normal(f)
879 for f in a: 878 for f in a:
880 try: 879 try:
881 os.unlink(repo.wjoin(f)) 880 os.unlink(repo.wjoin(f))