From 0de4e9092f14f16f953a9acbcb2213f1abcad64b Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Mon, 1 Aug 2022 18:56:27 +0200 Subject: [PATCH] VcsCommand: Remove cookie() method Change-Id: I2f83e141b05100c84c140d15a131e06ee62c6f68 Reviewed-by: Orgad Shaneh --- src/plugins/git/gitclient.cpp | 110 +++++++++++++++-------------- src/plugins/vcsbase/vcscommand.cpp | 7 +- src/plugins/vcsbase/vcscommand.h | 1 - 3 files changed, 58 insertions(+), 60 deletions(-) diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 6fc070bc92a..eda6cc156e1 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -3294,12 +3294,16 @@ void GitClient::push(const FilePath &workingDirectory, const QStringList &pushAr VcsCommand *command = vcsExec(workingDirectory, QStringList({"push"}) + pushArgs, nullptr, true, VcsCommand::ShowSuccessMessage); connect(command, &VcsCommand::stdErrText, this, [this, command](const QString &text) { + PushFailure failure = Unknown; if (text.contains("non-fast-forward")) - command->setCookie(NonFastForward); + failure = NonFastForward; else if (text.contains("has no upstream branch")) - command->setCookie(NoRemoteBranch); + failure = NoRemoteBranch; - if (command->cookie().toInt() == NoRemoteBranch) { + if (failure != Unknown) + command->setCookie(failure); + + if (failure == NoRemoteBranch) { const QStringList lines = text.split('\n', Qt::SkipEmptyParts); for (const QString &line : lines) { /* Extract the suggested command from the git output which @@ -3315,57 +3319,57 @@ void GitClient::push(const FilePath &workingDirectory, const QStringList &pushAr } } }); - connect(command, &VcsCommand::finished, - this, [this, command, workingDirectory, pushArgs](bool success) { - if (!success) { - switch (static_cast(command->cookie().toInt())) { - case Unknown: - break; - case NonFastForward: { - const QColor warnColor = Utils::creatorTheme()->color(Theme::TextColorError); - if (QMessageBox::question( - Core::ICore::dialogParent(), tr("Force Push"), - tr("Push failed. Would you like to force-push " - "(rewrites remote history)?") - .arg(QString::number(warnColor.rgba(), 16)), - QMessageBox::Yes | QMessageBox::No, - QMessageBox::No) == QMessageBox::Yes) { - VcsCommand *rePushCommand = vcsExec(workingDirectory, - QStringList({"push", "--force-with-lease"}) + pushArgs, - nullptr, true, VcsCommand::ShowSuccessMessage); - connect(rePushCommand, &VcsCommand::finished, this, [](bool success) { - if (success) - GitPlugin::updateCurrentBranch(); - }); - } - break; - } - case NoRemoteBranch: - if (QMessageBox::question( - Core::ICore::dialogParent(), tr("No Upstream Branch"), - tr("Push failed because the local branch \"%1\" " - "does not have an upstream branch on the remote.\n\n" - "Would you like to create the branch \"%1\" on the " - "remote and set it as upstream?") - .arg(synchronousCurrentLocalBranch(workingDirectory)), - QMessageBox::Yes | QMessageBox::No, - QMessageBox::No) == QMessageBox::Yes) { - - const QStringList fallbackCommandParts = - m_pushFallbackCommand.split(' ', Qt::SkipEmptyParts); - VcsCommand *rePushCommand = vcsExec(workingDirectory, - fallbackCommandParts.mid(1), nullptr, true, - VcsCommand::ShowSuccessMessage); - connect(rePushCommand, &VcsCommand::finished, this, - [workingDirectory](bool success) { - if (success) - GitPlugin::updateBranches(workingDirectory); - }); - } - break; - } - } else { + connect(command, &VcsCommand::finished, this, + [this, workingDirectory, pushArgs](bool success, const QVariant &cookie) { + if (success) { GitPlugin::updateCurrentBranch(); + return; + } + switch (static_cast(cookie.toInt())) { + case Unknown: + break; + case NonFastForward: { + const QColor warnColor = Utils::creatorTheme()->color(Theme::TextColorError); + if (QMessageBox::question( + Core::ICore::dialogParent(), tr("Force Push"), + tr("Push failed. Would you like to force-push " + "(rewrites remote history)?") + .arg(QString::number(warnColor.rgba(), 16)), + QMessageBox::Yes | QMessageBox::No, + QMessageBox::No) == QMessageBox::Yes) { + VcsCommand *rePushCommand = vcsExec(workingDirectory, + QStringList({"push", "--force-with-lease"}) + pushArgs, + nullptr, true, VcsCommand::ShowSuccessMessage); + connect(rePushCommand, &VcsCommand::finished, this, [](bool success) { + if (success) + GitPlugin::updateCurrentBranch(); + }); + } + break; + } + case NoRemoteBranch: + if (QMessageBox::question( + Core::ICore::dialogParent(), tr("No Upstream Branch"), + tr("Push failed because the local branch \"%1\" " + "does not have an upstream branch on the remote.\n\n" + "Would you like to create the branch \"%1\" on the " + "remote and set it as upstream?") + .arg(synchronousCurrentLocalBranch(workingDirectory)), + QMessageBox::Yes | QMessageBox::No, + QMessageBox::No) == QMessageBox::Yes) { + + const QStringList fallbackCommandParts = + m_pushFallbackCommand.split(' ', Qt::SkipEmptyParts); + VcsCommand *rePushCommand = vcsExec(workingDirectory, + fallbackCommandParts.mid(1), nullptr, true, + VcsCommand::ShowSuccessMessage); + connect(rePushCommand, &VcsCommand::finished, this, + [workingDirectory](bool success) { + if (success) + GitPlugin::updateBranches(workingDirectory); + }); + } + break; } }); } diff --git a/src/plugins/vcsbase/vcscommand.cpp b/src/plugins/vcsbase/vcscommand.cpp index f488d8c9c53..95bf10e2403 100644 --- a/src/plugins/vcsbase/vcscommand.cpp +++ b/src/plugins/vcsbase/vcscommand.cpp @@ -325,7 +325,7 @@ void VcsCommand::run(QFutureInterface &future) GlobalFileChangeBlocker::instance()->forceBlocked(false); }); } - emit finished(lastExecSuccess, cookie()); + emit finished(lastExecSuccess, d->m_cookie); if (lastExecSuccess) future.setProgressValue(future.progressMaximum()); else @@ -440,11 +440,6 @@ void VcsCommand::runSynchronous(QtcProcess &process) process.runBlocking(EventLoopMode::On); } -const QVariant &VcsCommand::cookie() const -{ - return d->m_cookie; -} - void VcsCommand::setCookie(const QVariant &cookie) { d->m_cookie = cookie; diff --git a/src/plugins/vcsbase/vcscommand.h b/src/plugins/vcsbase/vcscommand.h index 9ee4635bd9a..62383f898ec 100644 --- a/src/plugins/vcsbase/vcscommand.h +++ b/src/plugins/vcsbase/vcscommand.h @@ -140,7 +140,6 @@ public: void addFlags(unsigned f); - const QVariant &cookie() const; void setCookie(const QVariant &cookie); void setCodec(QTextCodec *codec);