hgext/mq.py
changeset 22405 6f63c47cbb86
parent 22070 c1ca47204590
child 22457 48791c2bea1c
equal deleted inserted replaced
22404:12bc7f06fc41 22405:6f63c47cbb86
   814                 for f in files:
   814                 for f in files:
   815                     if os.path.lexists(repo.wjoin(f)):
   815                     if os.path.lexists(repo.wjoin(f)):
   816                         merged.append(f)
   816                         merged.append(f)
   817                     else:
   817                     else:
   818                         removed.append(f)
   818                         removed.append(f)
       
   819                 repo.dirstate.beginparentchange()
   819                 for f in removed:
   820                 for f in removed:
   820                     repo.dirstate.remove(f)
   821                     repo.dirstate.remove(f)
   821                 for f in merged:
   822                 for f in merged:
   822                     repo.dirstate.merge(f)
   823                     repo.dirstate.merge(f)
   823                 p1, p2 = repo.dirstate.parents()
   824                 p1, p2 = repo.dirstate.parents()
   824                 repo.setparents(p1, merge)
   825                 repo.setparents(p1, merge)
       
   826                 repo.dirstate.endparentchange()
   825 
   827 
   826             if all_files and '.hgsubstate' in all_files:
   828             if all_files and '.hgsubstate' in all_files:
   827                 wctx = repo[None]
   829                 wctx = repo[None]
   828                 pctx = repo['.']
   830                 pctx = repo['.']
   829                 overwrite = False
   831                 overwrite = False
  1449 
  1451 
  1450                 tobackup = set(a + m + r) & tobackup
  1452                 tobackup = set(a + m + r) & tobackup
  1451                 if keepchanges and tobackup:
  1453                 if keepchanges and tobackup:
  1452                     raise util.Abort(_("local changes found, refresh first"))
  1454                     raise util.Abort(_("local changes found, refresh first"))
  1453                 self.backup(repo, tobackup)
  1455                 self.backup(repo, tobackup)
  1454 
  1456                 repo.dirstate.beginparentchange()
  1455                 for f in a:
  1457                 for f in a:
  1456                     util.unlinkpath(repo.wjoin(f), ignoremissing=True)
  1458                     util.unlinkpath(repo.wjoin(f), ignoremissing=True)
  1457                     repo.dirstate.drop(f)
  1459                     repo.dirstate.drop(f)
  1458                 for f in m + r:
  1460                 for f in m + r:
  1459                     fctx = ctx[f]
  1461                     fctx = ctx[f]
  1460                     repo.wwrite(f, fctx.data(), fctx.flags())
  1462                     repo.wwrite(f, fctx.data(), fctx.flags())
  1461                     repo.dirstate.normal(f)
  1463                     repo.dirstate.normal(f)
  1462                 repo.setparents(qp, nullid)
  1464                 repo.setparents(qp, nullid)
       
  1465                 repo.dirstate.endparentchange()
  1463             for patch in reversed(self.applied[start:end]):
  1466             for patch in reversed(self.applied[start:end]):
  1464                 self.ui.status(_("popping %s\n") % patch.name)
  1467                 self.ui.status(_("popping %s\n") % patch.name)
  1465             del self.applied[start:end]
  1468             del self.applied[start:end]
  1466             strip(self.ui, repo, [rev], update=False, backup=False)
  1469             strip(self.ui, repo, [rev], update=False, backup=False)
  1467             for s, state in repo['.'].substate.items():
  1470             for s, state in repo['.'].substate.items():
  1597             match = scmutil.matchfiles(repo, files)
  1600             match = scmutil.matchfiles(repo, files)
  1598 
  1601 
  1599             bmlist = repo[top].bookmarks()
  1602             bmlist = repo[top].bookmarks()
  1600 
  1603 
  1601             try:
  1604             try:
       
  1605                 repo.dirstate.beginparentchange()
  1602                 if diffopts.git or diffopts.upgrade:
  1606                 if diffopts.git or diffopts.upgrade:
  1603                     copies = {}
  1607                     copies = {}
  1604                     for dst in a:
  1608                     for dst in a:
  1605                         src = repo.dirstate.copied(dst)
  1609                         src = repo.dirstate.copied(dst)
  1606                         # during qfold, the source file for copies may
  1610                         # during qfold, the source file for copies may
  1649 
  1653 
  1650                 oldphase = repo[top].phase()
  1654                 oldphase = repo[top].phase()
  1651 
  1655 
  1652                 # assumes strip can roll itself back if interrupted
  1656                 # assumes strip can roll itself back if interrupted
  1653                 repo.setparents(*cparents)
  1657                 repo.setparents(*cparents)
       
  1658                 repo.dirstate.endparentchange()
  1654                 self.applied.pop()
  1659                 self.applied.pop()
  1655                 self.applieddirty = True
  1660                 self.applieddirty = True
  1656                 strip(self.ui, repo, [top], update=False, backup=False)
  1661                 strip(self.ui, repo, [top], update=False, backup=False)
  1657             except: # re-raises
  1662             except: # re-raises
  1658                 repo.dirstate.invalidate()
  1663                 repo.dirstate.invalidate()