mercurial/cmdutil.py
changeset 43841 fb4a6d584756
parent 43820 072b745936f1
child 43842 7315464f0613
equal deleted inserted replaced
43840:79c0121220e3 43841:fb4a6d584756
    22 from .pycompat import (
    22 from .pycompat import (
    23     getattr,
    23     getattr,
    24     open,
    24     open,
    25     setattr,
    25     setattr,
    26 )
    26 )
       
    27 from .thirdparty import attr
    27 
    28 
    28 from . import (
    29 from . import (
    29     bookmarks,
    30     bookmarks,
    30     changelog,
    31     changelog,
    31     copies,
    32     copies,
   776     lines = raw.splitlines()
   777     lines = raw.splitlines()
   777     commentedlines = [b'# %s' % line for line in lines]
   778     commentedlines = [b'# %s' % line for line in lines]
   778     return b'\n'.join(commentedlines) + b'\n'
   779     return b'\n'.join(commentedlines) + b'\n'
   779 
   780 
   780 
   781 
   781 def _conflictsmsg(repo):
   782 @attr.s(frozen=True)
       
   783 class morestatus(object):
       
   784     reporoot = attr.ib()
       
   785     unfinishedop = attr.ib()
       
   786     unfinishedmsg = attr.ib()
       
   787     inmergestate = attr.ib()
       
   788     unresolvedpaths = attr.ib()
       
   789     _label = b'status.morestatus'
       
   790 
       
   791     def formatfooter(self, fm):
       
   792         statemsg = _(b'The repository is in an unfinished *%s* state.'
       
   793                      ) % self.unfinishedop
       
   794         fm.plain(b'%s\n' % _commentlines(statemsg), label=self._label)
       
   795 
       
   796         self._formatconflicts(fm)
       
   797         if self.unfinishedmsg:
       
   798             fm.plain(b'%s\n' % _commentlines(self.unfinishedmsg),
       
   799                      label=self._label)
       
   800 
       
   801     def _formatconflicts(self, fm):
       
   802         if not self.inmergestate:
       
   803             return
       
   804 
       
   805         if self.unresolvedpaths:
       
   806             mergeliststr = b'\n'.join(
       
   807                 [
       
   808                     b'    %s' % util.pathto(self.reporoot, encoding.getcwd(),
       
   809                                             path)
       
   810                     for path in self.unresolvedpaths
       
   811                 ]
       
   812             )
       
   813             msg = (
       
   814                 _(
       
   815                     '''Unresolved merge conflicts:
       
   816 
       
   817 %s
       
   818 
       
   819 To mark files as resolved:  hg resolve --mark FILE'''
       
   820                 )
       
   821                 % mergeliststr
       
   822             )
       
   823         else:
       
   824             msg = _(b'No unresolved merge conflicts.')
       
   825 
       
   826         fm.plain(b'%s\n' % _commentlines(msg), label=self._label)
       
   827 
       
   828 
       
   829 def readmorestatus(repo):
       
   830     """Returns a morestatus object if the repo has unfinished state."""
       
   831     statetuple = statemod.getrepostate(repo)
       
   832     if not statetuple:
       
   833         return None
       
   834 
       
   835     unfinishedop, unfinishedmsg = statetuple
   782     mergestate = mergemod.mergestate.read(repo)
   836     mergestate = mergemod.mergestate.read(repo)
   783     if not mergestate.active():
   837     unresolved = None
   784         return
   838     if mergestate.active():
   785 
   839         unresolved = sorted(mergestate.unresolved())
   786     unresolvedlist = sorted(mergestate.unresolved())
   840     return morestatus(repo.root, unfinishedop, unfinishedmsg,
   787     if unresolvedlist:
   841                       unresolved is not None, unresolved)
   788         mergeliststr = b'\n'.join(
       
   789             [
       
   790                 b'    %s' % util.pathto(repo.root, encoding.getcwd(), path)
       
   791                 for path in unresolvedlist
       
   792             ]
       
   793         )
       
   794         msg = (
       
   795             _(
       
   796                 '''Unresolved merge conflicts:
       
   797 
       
   798 %s
       
   799 
       
   800 To mark files as resolved:  hg resolve --mark FILE'''
       
   801             )
       
   802             % mergeliststr
       
   803         )
       
   804     else:
       
   805         msg = _(b'No unresolved merge conflicts.')
       
   806 
       
   807     return _commentlines(msg)
       
   808 
       
   809 
       
   810 def morestatus(repo, fm):
       
   811     statetuple = statemod.getrepostate(repo)
       
   812     label = b'status.morestatus'
       
   813     if statetuple:
       
   814         state, helpfulmsg = statetuple
       
   815         statemsg = _(b'The repository is in an unfinished *%s* state.') % state
       
   816         fm.plain(b'%s\n' % _commentlines(statemsg), label=label)
       
   817         conmsg = _conflictsmsg(repo)
       
   818         if conmsg:
       
   819             fm.plain(b'%s\n' % conmsg, label=label)
       
   820         if helpfulmsg:
       
   821             fm.plain(b'%s\n' % _commentlines(helpfulmsg), label=label)
       
   822 
   842 
   823 
   843 
   824 def findpossible(cmd, table, strict=False):
   844 def findpossible(cmd, table, strict=False):
   825     """
   845     """
   826     Return cmd -> (aliases, command table entry)
   846     Return cmd -> (aliases, command table entry)