hgext/absorb.py
changeset 45893 f4a218331ff4
parent 45892 ac362d5a7893
child 46114 59fa3890d40a
equal deleted inserted replaced
45892:ac362d5a7893 45893:f4a218331ff4
   509                 self._getline(l),
   509                 self._getline(l),
   510             )
   510             )
   511         # run editor
   511         # run editor
   512         editedtext = self.ui.edit(editortext, b'', action=b'absorb')
   512         editedtext = self.ui.edit(editortext, b'', action=b'absorb')
   513         if not editedtext:
   513         if not editedtext:
   514             raise error.Abort(_(b'empty editor text'))
   514             raise error.InputError(_(b'empty editor text'))
   515         # parse edited result
   515         # parse edited result
   516         contents = [b''] * len(self.fctxs)
   516         contents = [b''] * len(self.fctxs)
   517         leftpadpos = 4
   517         leftpadpos = 4
   518         colonpos = leftpadpos + len(visiblefctxs) + 1
   518         colonpos = leftpadpos + len(visiblefctxs) + 1
   519         for l in mdiff.splitnewlines(editedtext):
   519         for l in mdiff.splitnewlines(editedtext):
   520             if l.startswith(b'HG:'):
   520             if l.startswith(b'HG:'):
   521                 continue
   521                 continue
   522             if l[colonpos - 1 : colonpos + 2] != b' : ':
   522             if l[colonpos - 1 : colonpos + 2] != b' : ':
   523                 raise error.Abort(_(b'malformed line: %s') % l)
   523                 raise error.InputError(_(b'malformed line: %s') % l)
   524             linecontent = l[colonpos + 2 :]
   524             linecontent = l[colonpos + 2 :]
   525             for i, ch in enumerate(
   525             for i, ch in enumerate(
   526                 pycompat.bytestr(l[leftpadpos : colonpos - 1])
   526                 pycompat.bytestr(l[leftpadpos : colonpos - 1])
   527             ):
   527             ):
   528                 if ch == b'y':
   528                 if ch == b'y':
  1016     """
  1016     """
  1017     if stack is None:
  1017     if stack is None:
  1018         limit = ui.configint(b'absorb', b'max-stack-size')
  1018         limit = ui.configint(b'absorb', b'max-stack-size')
  1019         headctx = repo[b'.']
  1019         headctx = repo[b'.']
  1020         if len(headctx.parents()) > 1:
  1020         if len(headctx.parents()) > 1:
  1021             raise error.Abort(_(b'cannot absorb into a merge'))
  1021             raise error.InputError(_(b'cannot absorb into a merge'))
  1022         stack = getdraftstack(headctx, limit)
  1022         stack = getdraftstack(headctx, limit)
  1023         if limit and len(stack) >= limit:
  1023         if limit and len(stack) >= limit:
  1024             ui.warn(
  1024             ui.warn(
  1025                 _(
  1025                 _(
  1026                     b'absorb: only the recent %d changesets will '
  1026                     b'absorb: only the recent %d changesets will '
  1027                     b'be analysed\n'
  1027                     b'be analysed\n'
  1028                 )
  1028                 )
  1029                 % limit
  1029                 % limit
  1030             )
  1030             )
  1031     if not stack:
  1031     if not stack:
  1032         raise error.Abort(_(b'no mutable changeset to change'))
  1032         raise error.InputError(_(b'no mutable changeset to change'))
  1033     if targetctx is None:  # default to working copy
  1033     if targetctx is None:  # default to working copy
  1034         targetctx = repo[None]
  1034         targetctx = repo[None]
  1035     if pats is None:
  1035     if pats is None:
  1036         pats = ()
  1036         pats = ()
  1037     if opts is None:
  1037     if opts is None: