Fri, 30 Aug 2019 18:54:30 +0200
HgStatusDialog: commitMerge and abortMerge actions added
HgLogBrowserDialog: uncommitted merge parents' icons are shown bolded
--- a/eric6/Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py Thu Aug 29 19:09:18 2019 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py Fri Aug 30 18:54:30 2019 +0200 @@ -434,7 +434,7 @@ self.__branchColors = {} - self.__projectRevision = -1 + self.__projectWorkingDirParents = [] self.__projectBranch = "" self.__childrenInfo = collections.defaultdict(list) @@ -836,9 +836,10 @@ if output: outputList = output.strip().split(None, 1) if len(outputList) == 2: - self.__projectRevision = outputList[0].strip() - if self.__projectRevision.endswith("+"): - self.__projectRevision = self.__projectRevision[:-1] + outputRevs = outputList[0].strip() + if outputRevs.endswith("+"): + outputRevs = outputRevs[:-1] + self.__projectWorkingDirParents = outputRevs.split('+') self.__projectBranch = outputList[1].strip() def __getClosedBranches(self): @@ -1069,7 +1070,7 @@ icon = self.__generateIcon(column, color, edges, topedges, QColor(self.__branchColor(branches[0])), - rev == self.__projectRevision, + rev in self.__projectWorkingDirParents, rev in self.__closedBranchesRevs, phase == "draft") itm.setIcon(0, icon)
--- a/eric6/Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.py Thu Aug 29 19:09:18 2019 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.py Fri Aug 30 18:54:30 2019 +0200 @@ -192,6 +192,17 @@ "Restores the selected missing files")) self.__actionsMenu.addSeparator() + + self.__commitMergeAct = self.__actionsMenu.addAction( + self.tr("Commit Merge"), self.__commitMerge) + self.__commitMergeAct.setToolTip(self.tr("Commit all the merged" + " changes.")) + self.__abortMergeAct = self.__actionsMenu.addAction( + self.tr("Abort Merge"), self.__abortMerge) + self.__commitMergeAct.setToolTip(self.tr("Abort an uncommitted merge " + "and lose all changes")) + + self.__actionsMenu.addSeparator() act = self.__actionsMenu.addAction( self.tr("Adjust column sizes"), self.__resizeColumns) @@ -201,7 +212,7 @@ self.actionsButton.setIcon( UI.PixmapCache.getIcon("actionsToolButton.png")) self.actionsButton.setMenu(self.__actionsMenu) - + def __actionsMenuHovered(self, action): """ Private slot to show the tooltip for an action menu entry. @@ -396,6 +407,8 @@ self.buttonBox.button(QDialogButtonBox.Cancel).setDefault(True) self.refreshButton.setEnabled(False) + + self.statusList.setEnabled(not self.vcs.canCommitMerge(self.dname)) def __finish(self): """ @@ -562,6 +575,8 @@ """ Private slot to refresh the status display. """ + self.statusList.setEnabled(not self.vcs.canCommitMerge(self.dname)) + selectedItems = self.statusList.selectedItems() if len(selectedItems) == 1: self.__selectedName = selectedItems[0].text(self.__pathColumn) @@ -601,28 +616,49 @@ """ Private slot to prepare the actions button menu before it is shown. """ - modified = len(self.__getModifiedItems()) - unversioned = len(self.__getUnversionedItems()) - missing = len(self.__getMissingItems()) - commitable = len(self.__getCommitableItems()) - commitableUnselected = len(self.__getCommitableUnselectedItems()) + if self.vcs.canCommitMerge(self.dname): + self.__commitMergeAct.setEnabled(True) + self.__abortMergeAct.setEnabled(True) + + self.__addAct.setEnabled(False) + self.__diffAct.setEnabled(False) + self.__sbsDiffAct.setEnabled(False) + self.__revertAct.setEnabled(False) + self.__forgetAct.setEnabled(False) + self.__restoreAct.setEnabled(False) + self.__commitAct.setEnabled(False) + self.__commitSelectAct.setEnabled(False) + self.__commitDeselectAct.setEnabled(False) + + self.__lfAddLargeAct.setEnabled(False) + self.__lfAddNormalAct.setEnabled(False) + + else: + self.__commitMergeAct.setEnabled(False) + self.__abortMergeAct.setEnabled(False) - self.__addAct.setEnabled(unversioned) - self.__diffAct.setEnabled(modified) - self.__sbsDiffAct.setEnabled(modified == 1) - self.__revertAct.setEnabled(modified) - self.__forgetAct.setEnabled(missing) - self.__restoreAct.setEnabled(missing) - self.__commitAct.setEnabled(commitable) - self.__commitSelectAct.setEnabled(commitableUnselected) - self.__commitDeselectAct.setEnabled(commitable) - - if self.vcs.isExtensionActive("largefiles"): - enable = bool(unversioned) - else: - enable = False - self.__lfAddLargeAct.setEnabled(enable) - self.__lfAddNormalAct.setEnabled(enable) + modified = len(self.__getModifiedItems()) + unversioned = len(self.__getUnversionedItems()) + missing = len(self.__getMissingItems()) + commitable = len(self.__getCommitableItems()) + commitableUnselected = len(self.__getCommitableUnselectedItems()) + + self.__addAct.setEnabled(unversioned) + self.__diffAct.setEnabled(modified) + self.__sbsDiffAct.setEnabled(modified == 1) + self.__revertAct.setEnabled(modified) + self.__forgetAct.setEnabled(missing) + self.__restoreAct.setEnabled(missing) + self.__commitAct.setEnabled(commitable) + self.__commitSelectAct.setEnabled(commitableUnselected) + self.__commitDeselectAct.setEnabled(commitable) + + if self.vcs.isExtensionActive("largefiles"): + enable = bool(unversioned) + else: + enable = False + self.__lfAddLargeAct.setEnabled(enable) + self.__lfAddNormalAct.setEnabled(enable) def __commit(self): """ @@ -895,6 +931,20 @@ else: itm.setCheckState(self.__toBeCommittedColumn, Qt.Unchecked) + def __commitMerge(self): + """ + Private slot to handle the Commit Merge context menu entry. + """ + self.vcs.vcsCommit(self.dname, 'Merge', merge=True) + self.__committed() + + def __abortMerge(self): + """ + Private slot used to abort an uncommitted merge. + """ + self.vcs.hgAbortMerge(self.dname) + self.__committed() + ########################################################################### ## Diff handling methods below ###########################################################################
--- a/eric6/Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py Thu Aug 29 19:09:18 2019 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py Fri Aug 30 18:54:30 2019 +0200 @@ -424,7 +424,7 @@ self.tr('Commit Merge'), 0, 0, self, 'mercurial_commit_merge') self.hgCommitMergeAct.setStatusTip(self.tr( - 'Commit a merge.' + 'Commit all the merged changes.' )) self.hgCommitMergeAct.setWhatsThis(self.tr( """<b>Commit a merge</b>"""