diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 48fde2be1e12b5ffd758d7acfc3cb72f66d3a13c..0e8f5af0ed8cb3c3ab18cecf668813f19a5baca1 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -2132,10 +2132,10 @@ bool GitClient::synchronousPull(const QString &workingDirectory, bool rebase) return executeAndHandleConflicts(workingDirectory, arguments, abortCommand); } -bool GitClient::synchronousCommandContinue(const QString &workingDirectory, const QString &command) +bool GitClient::synchronousCommandContinue(const QString &workingDirectory, const QString &command, bool hasChanges) { QStringList arguments; - arguments << command << QLatin1String("--continue"); + arguments << command << QLatin1String(hasChanges ? "--continue" : "--skip"); return executeAndHandleConflicts(workingDirectory, arguments, command); } diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h index 956fcb460bccca4a1767db165807c8bbeaea18a7..66be621f2a25bb2f20c95d7effba7daf02b50b62 100644 --- a/src/plugins/git/gitclient.h +++ b/src/plugins/git/gitclient.h @@ -198,7 +198,7 @@ public: QString vcsGetRepositoryURL(const QString &directory); bool synchronousFetch(const QString &workingDirectory, const QString &remote); bool synchronousPull(const QString &workingDirectory, bool rebase); - bool synchronousCommandContinue(const QString &workingDirectory, const QString &command); + bool synchronousCommandContinue(const QString &workingDirectory, const QString &command, bool hasChanges); bool synchronousPush(const QString &workingDirectory, const QString &remote = QString()); bool synchronousMerge(const QString &workingDirectory, const QString &branch); bool synchronousRebase(const QString &workingDirectory, diff --git a/src/plugins/git/mergetool.cpp b/src/plugins/git/mergetool.cpp index 45bec25742bb89b13ccf433752a2cb8c0f945f8d..c44bbfe4f97905ddb60e41eed1c66a21d717203e 100644 --- a/src/plugins/git/mergetool.cpp +++ b/src/plugins/git/mergetool.cpp @@ -255,26 +255,31 @@ void MergeTool::readData() } } -void MergeTool::continuePreviousGitCommand(const QString &msgBoxTitle, const QString &msgBoxText, +void MergeTool::continuePreviousGitCommand(const QString &msgBoxTitle, QString msgBoxText, const QString &buttonName, const QString &gitCommand) { QString workingDirectory = m_process->workingDirectory(); - QMessageBox msgBox; - QPushButton *commandButton = msgBox.addButton(buttonName, QMessageBox::AcceptRole); - QPushButton *abortButton = msgBox.addButton(QMessageBox::Abort); + bool isRebase = gitCommand == QLatin1String("rebase"); + bool hasChanges = m_gitClient->gitStatus(m_process->workingDirectory(), + StatusMode(NoUntracked | NoSubmodules)) == GitClient::StatusChanged; + if (!hasChanges) + msgBoxText.prepend(tr("No changes found. ")); + QMessageBox msgBox(QMessageBox::Question, msgBoxTitle, msgBoxText); + if (hasChanges || isRebase) + msgBox.addButton(hasChanges ? buttonName : tr("Skip"), QMessageBox::AcceptRole); + msgBox.addButton(QMessageBox::Abort); msgBox.addButton(QMessageBox::Ignore); - msgBox.setIcon(QMessageBox::Question); - msgBox.setWindowTitle(msgBoxTitle); - msgBox.setText(msgBoxText); - msgBox.exec(); - - if (msgBox.clickedButton() == commandButton) { // Continue - if (gitCommand == QLatin1String("rebase")) - m_gitClient->synchronousCommandContinue(workingDirectory, gitCommand); + switch (msgBox.exec()) { + case QMessageBox::Ignore: + break; + case QMessageBox::Abort: + m_gitClient->synchronousAbortCommand(workingDirectory, gitCommand); + break; + default: // Continue/Skip + if (isRebase) + m_gitClient->synchronousCommandContinue(workingDirectory, gitCommand, hasChanges); else GitPlugin::instance()->startCommit(); - } else if (msgBox.clickedButton() == abortButton) { // Abort - m_gitClient->synchronousAbortCommand(workingDirectory, gitCommand); } } diff --git a/src/plugins/git/mergetool.h b/src/plugins/git/mergetool.h index edb5658cc49a487d9d88ed2a24b4734ea60395e8..093b7ab4c9b18082f174ddd69e333b857c87566a 100644 --- a/src/plugins/git/mergetool.h +++ b/src/plugins/git/mergetool.h @@ -78,7 +78,7 @@ private: QString stateName(FileState state, const QString &extraInfo); void chooseAction(); void addButton(QMessageBox *msgBox, const QString &text, char key); - void continuePreviousGitCommand(const QString &msgBoxTitle, const QString &msgBoxText, + void continuePreviousGitCommand(const QString &msgBoxTitle, QString msgBoxText, const QString &buttonName, const QString &gitCommand); MergeToolProcess *m_process;