hgext/mq.py
changeset 5140 f6c520fd70cf
parent 5124 06154aff2b1a
child 5175 f8aa16533ddf
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))