hgext/mq.py
changeset 24996 58308ddea208
parent 24826 9b02b678888e
child 24997 12f3c7144a39
equal deleted inserted replaced
24995:0579b0c2ea2b 24996:58308ddea208
   805             return (False, list(files), False)
   805             return (False, list(files), False)
   806 
   806 
   807     def apply(self, repo, series, list=False, update_status=True,
   807     def apply(self, repo, series, list=False, update_status=True,
   808               strict=False, patchdir=None, merge=None, all_files=None,
   808               strict=False, patchdir=None, merge=None, all_files=None,
   809               tobackup=None, keepchanges=False):
   809               tobackup=None, keepchanges=False):
   810         wlock = lock = tr = None
   810         wlock = dsguard = lock = tr = None
   811         try:
   811         try:
   812             wlock = repo.wlock()
   812             wlock = repo.wlock()
       
   813             dsguard = cmdutil.dirstateguard(repo, 'mq.apply')
   813             lock = repo.lock()
   814             lock = repo.lock()
   814             tr = repo.transaction("qpush")
   815             tr = repo.transaction("qpush")
   815             try:
   816             try:
   816                 ret = self._apply(repo, series, list, update_status,
   817                 ret = self._apply(repo, series, list, update_status,
   817                                   strict, patchdir, merge, all_files=all_files,
   818                                   strict, patchdir, merge, all_files=all_files,
   818                                   tobackup=tobackup, keepchanges=keepchanges)
   819                                   tobackup=tobackup, keepchanges=keepchanges)
   819                 tr.close()
   820                 tr.close()
   820                 self.savedirty()
   821                 self.savedirty()
       
   822                 dsguard.close()
   821                 return ret
   823                 return ret
   822             except AbortNoCleanup:
   824             except AbortNoCleanup:
   823                 tr.close()
   825                 tr.close()
   824                 self.savedirty()
   826                 self.savedirty()
       
   827                 dsguard.close()
   825                 raise
   828                 raise
   826             except: # re-raises
   829             except: # re-raises
   827                 try:
   830                 try:
   828                     tr.abort()
   831                     tr.abort()
   829                 finally:
   832                 finally:
   830                     repo.invalidate()
   833                     repo.invalidate()
   831                     repo.dirstate.invalidate()
       
   832                     self.invalidate()
   834                     self.invalidate()
   833                 raise
   835                 raise
   834         finally:
   836         finally:
   835             release(tr, lock, wlock)
   837             release(tr, lock, dsguard, wlock)
   836             self.removeundo(repo)
   838             self.removeundo(repo)
   837 
   839 
   838     def _apply(self, repo, series, list=False, update_status=True,
   840     def _apply(self, repo, series, list=False, update_status=True,
   839                strict=False, patchdir=None, merge=None, all_files=None,
   841                strict=False, patchdir=None, merge=None, all_files=None,
   840                tobackup=None, keepchanges=False):
   842                tobackup=None, keepchanges=False):