Mercurial > hg
comparison hgext/rebase.py @ 47460:c9cedb546262
rebase: use str-keyed opts in remaining places
Differential Revision: https://phab.mercurial-scm.org/D10892
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Mon, 21 Jun 2021 10:01:55 -0700 |
parents | de54d11040e7 |
children | 0044a7ad9f2f |
comparison
equal
deleted
inserted
replaced
47459:de54d11040e7 | 47460:c9cedb546262 |
---|---|
188 self.state = {} | 188 self.state = {} |
189 self.activebookmark = None | 189 self.activebookmark = None |
190 self.destmap = {} | 190 self.destmap = {} |
191 self.skipped = set() | 191 self.skipped = set() |
192 | 192 |
193 self.collapsef = opts.get(b'collapse', False) | 193 self.collapsef = opts.get('collapse', False) |
194 self.collapsemsg = cmdutil.logmessage(ui, opts) | 194 self.collapsemsg = cmdutil.logmessage(ui, pycompat.byteskwargs(opts)) |
195 self.date = opts.get(b'date', None) | 195 self.date = opts.get('date', None) |
196 | 196 |
197 e = opts.get(b'extrafn') # internal, used by e.g. hgsubversion | 197 e = opts.get('extrafn') # internal, used by e.g. hgsubversion |
198 self.extrafns = [_savegraft] | 198 self.extrafns = [_savegraft] |
199 if e: | 199 if e: |
200 self.extrafns = [e] | 200 self.extrafns = [e] |
201 | 201 |
202 self.backupf = ui.configbool(b'rewrite', b'backup-bundle') | 202 self.backupf = ui.configbool(b'rewrite', b'backup-bundle') |
203 self.keepf = opts.get(b'keep', False) | 203 self.keepf = opts.get('keep', False) |
204 self.keepbranchesf = opts.get(b'keepbranches', False) | 204 self.keepbranchesf = opts.get('keepbranches', False) |
205 self.skipemptysuccessorf = rewriteutil.skip_empty_successor( | 205 self.skipemptysuccessorf = rewriteutil.skip_empty_successor( |
206 repo.ui, b'rebase' | 206 repo.ui, b'rebase' |
207 ) | 207 ) |
208 self.obsolete_with_successor_in_destination = {} | 208 self.obsolete_with_successor_in_destination = {} |
209 self.obsolete_with_successor_in_rebase_set = set() | 209 self.obsolete_with_successor_in_rebase_set = set() |
628 ) | 628 ) |
629 if self.resume and self.wctx.p1().rev() == p1: | 629 if self.resume and self.wctx.p1().rev() == p1: |
630 repo.ui.debug(b'resuming interrupted rebase\n') | 630 repo.ui.debug(b'resuming interrupted rebase\n') |
631 self.resume = False | 631 self.resume = False |
632 else: | 632 else: |
633 overrides = {(b'ui', b'forcemerge'): opts.get(b'tool', b'')} | 633 overrides = {(b'ui', b'forcemerge'): opts.get('tool', b'')} |
634 with ui.configoverride(overrides, b'rebase'): | 634 with ui.configoverride(overrides, b'rebase'): |
635 try: | 635 try: |
636 rebasenode( | 636 rebasenode( |
637 repo, | 637 repo, |
638 rev, | 638 rev, |
675 wctx=self.wctx, | 675 wctx=self.wctx, |
676 ) | 676 ) |
677 if not self.collapsef: | 677 if not self.collapsef: |
678 merging = p2 != nullrev | 678 merging = p2 != nullrev |
679 editform = cmdutil.mergeeditform(merging, b'rebase') | 679 editform = cmdutil.mergeeditform(merging, b'rebase') |
680 editor = cmdutil.getcommiteditor( | 680 editor = cmdutil.getcommiteditor(editform=editform, **opts) |
681 editform=editform, **pycompat.strkwargs(opts) | |
682 ) | |
683 # We need to set parents again here just in case we're continuing | 681 # We need to set parents again here just in case we're continuing |
684 # a rebase started with an old hg version (before 9c9cfecd4600), | 682 # a rebase started with an old hg version (before 9c9cfecd4600), |
685 # because those old versions would have left us with two dirstate | 683 # because those old versions would have left us with two dirstate |
686 # parents, and we don't want to create a merge commit here (unless | 684 # parents, and we don't want to create a merge commit here (unless |
687 # we're rebasing a merge commit). | 685 # we're rebasing a merge commit). |
725 # case and realize that the commit was in progress. | 723 # case and realize that the commit was in progress. |
726 self.storestatus() | 724 self.storestatus() |
727 | 725 |
728 def _finishrebase(self): | 726 def _finishrebase(self): |
729 repo, ui, opts = self.repo, self.ui, self.opts | 727 repo, ui, opts = self.repo, self.ui, self.opts |
730 fm = ui.formatter(b'rebase', opts) | 728 fm = ui.formatter(b'rebase', pycompat.byteskwargs(opts)) |
731 fm.startitem() | 729 fm.startitem() |
732 if self.collapsef: | 730 if self.collapsef: |
733 p1, p2, _base = defineparents( | 731 p1, p2, _base = defineparents( |
734 repo, | 732 repo, |
735 min(self.state), | 733 min(self.state), |
736 self.destmap, | 734 self.destmap, |
737 self.state, | 735 self.state, |
738 self.skipped, | 736 self.skipped, |
739 self.obsolete_with_successor_in_destination, | 737 self.obsolete_with_successor_in_destination, |
740 ) | 738 ) |
741 editopt = opts.get(b'edit') | 739 editopt = opts.get('edit') |
742 editform = b'rebase.collapse' | 740 editform = b'rebase.collapse' |
743 if self.collapsemsg: | 741 if self.collapsemsg: |
744 commitmsg = self.collapsemsg | 742 commitmsg = self.collapsemsg |
745 else: | 743 else: |
746 commitmsg = b'Collapsed revision' | 744 commitmsg = b'Collapsed revision' |
760 newrev = repo[newnode].rev() | 758 newrev = repo[newnode].rev() |
761 for oldrev in self.state: | 759 for oldrev in self.state: |
762 self.state[oldrev] = newrev | 760 self.state[oldrev] = newrev |
763 | 761 |
764 if b'qtip' in repo.tags(): | 762 if b'qtip' in repo.tags(): |
765 updatemq(repo, self.state, self.skipped, **pycompat.strkwargs(opts)) | 763 updatemq(repo, self.state, self.skipped, **opts) |
766 | 764 |
767 # restore original working directory | 765 # restore original working directory |
768 # (we do this before stripping) | 766 # (we do this before stripping) |
769 newwd = self.state.get(self.originalwd, self.originalwd) | 767 newwd = self.state.get(self.originalwd, self.originalwd) |
770 if newwd < 0: | 768 if newwd < 0: |
1089 | 1087 |
1090 userrevs = list(repo.revs(opts.get('auto_orphans'))) | 1088 userrevs = list(repo.revs(opts.get('auto_orphans'))) |
1091 opts['rev'] = [revsetlang.formatspec(b'%ld and orphan()', userrevs)] | 1089 opts['rev'] = [revsetlang.formatspec(b'%ld and orphan()', userrevs)] |
1092 opts['dest'] = b'_destautoorphanrebase(SRC)' | 1090 opts['dest'] = b'_destautoorphanrebase(SRC)' |
1093 | 1091 |
1094 opts = pycompat.byteskwargs(opts) | 1092 if opts.get('dry_run') or opts.get('confirm'): |
1095 if opts.get(b'dry_run') or opts.get(b'confirm'): | |
1096 return _dryrunrebase(ui, repo, action, opts) | 1093 return _dryrunrebase(ui, repo, action, opts) |
1097 elif action == 'stop': | 1094 elif action == 'stop': |
1098 rbsrt = rebaseruntime(repo, ui) | 1095 rbsrt = rebaseruntime(repo, ui) |
1099 with repo.wlock(), repo.lock(): | 1096 with repo.wlock(), repo.lock(): |
1100 rbsrt.restorestatus() | 1097 rbsrt.restorestatus() |
1141 return _dorebase(ui, repo, action, opts) | 1138 return _dorebase(ui, repo, action, opts) |
1142 | 1139 |
1143 | 1140 |
1144 def _dryrunrebase(ui, repo, action, opts): | 1141 def _dryrunrebase(ui, repo, action, opts): |
1145 rbsrt = rebaseruntime(repo, ui, inmemory=True, dryrun=True, opts=opts) | 1142 rbsrt = rebaseruntime(repo, ui, inmemory=True, dryrun=True, opts=opts) |
1146 confirm = opts.get(b'confirm') | 1143 confirm = opts.get('confirm') |
1147 if confirm: | 1144 if confirm: |
1148 ui.status(_(b'starting in-memory rebase\n')) | 1145 ui.status(_(b'starting in-memory rebase\n')) |
1149 else: | 1146 else: |
1150 ui.status( | 1147 ui.status( |
1151 _(b'starting dry-run rebase; repository will not be changed\n') | 1148 _(b'starting dry-run rebase; repository will not be changed\n') |
1198 # no need to store backup in case of dryrun | 1195 # no need to store backup in case of dryrun |
1199 rbsrt._prepareabortorcontinue( | 1196 rbsrt._prepareabortorcontinue( |
1200 isabort=True, | 1197 isabort=True, |
1201 backup=False, | 1198 backup=False, |
1202 suppwarns=True, | 1199 suppwarns=True, |
1203 dryrun=opts.get(b'dry_run'), | 1200 dryrun=opts.get('dry_run'), |
1204 ) | 1201 ) |
1205 | 1202 |
1206 | 1203 |
1207 def _dorebase(ui, repo, action, opts, inmemory=False): | 1204 def _dorebase(ui, repo, action, opts, inmemory=False): |
1208 rbsrt = rebaseruntime(repo, ui, inmemory, opts=opts) | 1205 rbsrt = rebaseruntime(repo, ui, inmemory, opts=opts) |
1210 | 1207 |
1211 | 1208 |
1212 def _origrebase(ui, repo, action, opts, rbsrt): | 1209 def _origrebase(ui, repo, action, opts, rbsrt): |
1213 assert action != 'stop' | 1210 assert action != 'stop' |
1214 with repo.wlock(), repo.lock(): | 1211 with repo.wlock(), repo.lock(): |
1215 if opts.get(b'interactive'): | 1212 if opts.get('interactive'): |
1216 try: | 1213 try: |
1217 if extensions.find(b'histedit'): | 1214 if extensions.find(b'histedit'): |
1218 enablehistedit = b'' | 1215 enablehistedit = b'' |
1219 except KeyError: | 1216 except KeyError: |
1220 enablehistedit = b" --config extensions.histedit=" | 1217 enablehistedit = b" --config extensions.histedit=" |
1236 if action: | 1233 if action: |
1237 if rbsrt.collapsef: | 1234 if rbsrt.collapsef: |
1238 raise error.InputError( | 1235 raise error.InputError( |
1239 _(b'cannot use collapse with continue or abort') | 1236 _(b'cannot use collapse with continue or abort') |
1240 ) | 1237 ) |
1241 if action == 'abort' and opts.get(b'tool', False): | 1238 if action == 'abort' and opts.get('tool', False): |
1242 ui.warn(_(b'tool option will be ignored\n')) | 1239 ui.warn(_(b'tool option will be ignored\n')) |
1243 if action == 'continue': | 1240 if action == 'continue': |
1244 ms = mergestatemod.mergestate.read(repo) | 1241 ms = mergestatemod.mergestate.read(repo) |
1245 mergeutil.checkunresolved(ms) | 1242 mergeutil.checkunresolved(ms) |
1246 | 1243 |
1248 if retcode is not None: | 1245 if retcode is not None: |
1249 return retcode | 1246 return retcode |
1250 else: | 1247 else: |
1251 # search default destination in this space | 1248 # search default destination in this space |
1252 # used in the 'hg pull --rebase' case, see issue 5214. | 1249 # used in the 'hg pull --rebase' case, see issue 5214. |
1253 destspace = opts.get(b'_destspace') | 1250 destspace = opts.get('_destspace') |
1254 destmap = _definedestmap( | 1251 destmap = _definedestmap( |
1255 ui, | 1252 ui, |
1256 repo, | 1253 repo, |
1257 rbsrt.inmemory, | 1254 rbsrt.inmemory, |
1258 opts.get(b'dest', None), | 1255 opts.get('dest', None), |
1259 opts.get(b'source', []), | 1256 opts.get('source', []), |
1260 opts.get(b'base', []), | 1257 opts.get('base', []), |
1261 opts.get(b'rev', []), | 1258 opts.get('rev', []), |
1262 destspace=destspace, | 1259 destspace=destspace, |
1263 ) | 1260 ) |
1264 retcode = rbsrt._preparenewrebase(destmap) | 1261 retcode = rbsrt._preparenewrebase(destmap) |
1265 if retcode is not None: | 1262 if retcode is not None: |
1266 return retcode | 1263 return retcode |