diff options
author | Jarek Kobus <jaroslaw.kobus@qt.io> | 2022-08-01 18:56:27 +0200 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@qt.io> | 2022-08-01 17:25:59 +0000 |
commit | 0de4e9092f14f16f953a9acbcb2213f1abcad64b (patch) | |
tree | 6af8c11f25012eb36b73bd12a770cbf71498b31f /src/plugins/git/gitclient.cpp | |
parent | 83739bde384b5a92a8b6a542c6947d38871a016e (diff) | |
download | qt-creator-0de4e9092f14f16f953a9acbcb2213f1abcad64b.tar.gz |
VcsCommand: Remove cookie() method
Change-Id: I2f83e141b05100c84c140d15a131e06ee62c6f68
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Diffstat (limited to 'src/plugins/git/gitclient.cpp')
-rw-r--r-- | src/plugins/git/gitclient.cpp | 108 |
1 files changed, 56 insertions, 52 deletions
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 6fc070bc92..eda6cc156e 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<PushFailure>(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 <span style=\"color:#%1\">" - "(rewrites remote history)</span>?") - .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; + connect(command, &VcsCommand::finished, this, + [this, workingDirectory, pushArgs](bool success, const QVariant &cookie) { + if (success) { + GitPlugin::updateCurrentBranch(); + return; + } + switch (static_cast<PushFailure>(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 <span style=\"color:#%1\">" + "(rewrites remote history)</span>?") + .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(); + }); } - 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; + 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); + }); } - } else { - GitPlugin::updateCurrentBranch(); + break; } }); } |