hgext/rebase.py
changeset 44960 78cafd48b9b2
parent 44856 b7808443ed6a
parent 44923 1f114c797961
child 45085 a0192a03216d
equal deleted inserted replaced
44953:50005af3c7a8 44960:78cafd48b9b2
   366         skippedset = set(self.obsoletenotrebased)
   366         skippedset = set(self.obsoletenotrebased)
   367         skippedset.update(self.obsoletewithoutsuccessorindestination)
   367         skippedset.update(self.obsoletewithoutsuccessorindestination)
   368         skippedset.update(obsoleteextinctsuccessors)
   368         skippedset.update(obsoleteextinctsuccessors)
   369         _checkobsrebase(self.repo, self.ui, obsoleteset, skippedset)
   369         _checkobsrebase(self.repo, self.ui, obsoleteset, skippedset)
   370 
   370 
   371     def _prepareabortorcontinue(self, isabort, backup=True, suppwarns=False):
   371     def _prepareabortorcontinue(
       
   372         self, isabort, backup=True, suppwarns=False, dryrun=False, confirm=False
       
   373     ):
   372         self.resume = True
   374         self.resume = True
   373         try:
   375         try:
   374             self.restorestatus()
   376             self.restorestatus()
   375             self.collapsemsg = restorecollapsemsg(self.repo, isabort)
   377             self.collapsemsg = restorecollapsemsg(self.repo, isabort)
   376         except error.RepoLookupError:
   378         except error.RepoLookupError:
   389                 hint = _(b'use "hg rebase --abort" to clear broken state')
   391                 hint = _(b'use "hg rebase --abort" to clear broken state')
   390                 raise error.Abort(msg, hint=hint)
   392                 raise error.Abort(msg, hint=hint)
   391 
   393 
   392         if isabort:
   394         if isabort:
   393             backup = backup and self.backupf
   395             backup = backup and self.backupf
   394             return self._abort(backup=backup, suppwarns=suppwarns)
   396             return self._abort(
       
   397                 backup=backup,
       
   398                 suppwarns=suppwarns,
       
   399                 dryrun=dryrun,
       
   400                 confirm=confirm,
       
   401             )
   395 
   402 
   396     def _preparenewrebase(self, destmap):
   403     def _preparenewrebase(self, destmap):
   397         if not destmap:
   404         if not destmap:
   398             return _nothingtorebase()
   405             return _nothingtorebase()
   399 
   406 
   748             and self.activebookmark in repo._bookmarks
   755             and self.activebookmark in repo._bookmarks
   749             and repo[b'.'].node() == repo._bookmarks[self.activebookmark]
   756             and repo[b'.'].node() == repo._bookmarks[self.activebookmark]
   750         ):
   757         ):
   751             bookmarks.activate(repo, self.activebookmark)
   758             bookmarks.activate(repo, self.activebookmark)
   752 
   759 
   753     def _abort(self, backup=True, suppwarns=False):
   760     def _abort(self, backup=True, suppwarns=False, dryrun=False, confirm=False):
   754         '''Restore the repository to its original state.'''
   761         '''Restore the repository to its original state.'''
   755 
   762 
   756         repo = self.repo
   763         repo = self.repo
   757         try:
   764         try:
   758             # If the first commits in the rebased set get skipped during the
   765             # If the first commits in the rebased set get skipped during the
   792                         c.node() for c in repo.set(b'roots(%ld)', rebased)
   799                         c.node() for c in repo.set(b'roots(%ld)', rebased)
   793                     ]
   800                     ]
   794 
   801 
   795                 updateifonnodes = set(rebased)
   802                 updateifonnodes = set(rebased)
   796                 updateifonnodes.update(self.destmap.values())
   803                 updateifonnodes.update(self.destmap.values())
   797                 updateifonnodes.add(self.originalwd)
   804 
       
   805                 if not dryrun and not confirm:
       
   806                     updateifonnodes.add(self.originalwd)
       
   807 
   798                 shouldupdate = repo[b'.'].rev() in updateifonnodes
   808                 shouldupdate = repo[b'.'].rev() in updateifonnodes
   799 
   809 
   800                 # Update away from the rebase if necessary
   810                 # Update away from the rebase if necessary
   801                 if shouldupdate:
   811                 if shouldupdate:
   802                     mergemod.clean_update(repo[self.originalwd])
   812                     mergemod.clean_update(repo[self.originalwd])
  1118                 if not ui.promptchoice(_(b'apply changes (yn)?$$ &Yes $$ &No')):
  1128                 if not ui.promptchoice(_(b'apply changes (yn)?$$ &Yes $$ &No')):
  1119                     # finish unfinished rebase
  1129                     # finish unfinished rebase
  1120                     rbsrt._finishrebase()
  1130                     rbsrt._finishrebase()
  1121                 else:
  1131                 else:
  1122                     rbsrt._prepareabortorcontinue(
  1132                     rbsrt._prepareabortorcontinue(
  1123                         isabort=True, backup=False, suppwarns=True
  1133                         isabort=True,
       
  1134                         backup=False,
       
  1135                         suppwarns=True,
       
  1136                         confirm=confirm,
  1124                     )
  1137                     )
  1125                 needsabort = False
  1138                 needsabort = False
  1126             else:
  1139             else:
  1127                 ui.status(
  1140                 ui.status(
  1128                     _(
  1141                     _(
  1133             return 0
  1146             return 0
  1134         finally:
  1147         finally:
  1135             if needsabort:
  1148             if needsabort:
  1136                 # no need to store backup in case of dryrun
  1149                 # no need to store backup in case of dryrun
  1137                 rbsrt._prepareabortorcontinue(
  1150                 rbsrt._prepareabortorcontinue(
  1138                     isabort=True, backup=False, suppwarns=True
  1151                     isabort=True,
       
  1152                     backup=False,
       
  1153                     suppwarns=True,
       
  1154                     dryrun=opts.get(b'dry_run'),
  1139                 )
  1155                 )
  1140 
  1156 
  1141 
  1157 
  1142 def _dorebase(ui, repo, action, opts, inmemory=False):
  1158 def _dorebase(ui, repo, action, opts, inmemory=False):
  1143     rbsrt = rebaseruntime(repo, ui, inmemory, opts)
  1159     rbsrt = rebaseruntime(repo, ui, inmemory, opts)