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) |