summaryrefslogtreecommitdiff
path: root/src/plugins/git/gitclient.cpp
diff options
context:
space:
mode:
authorJarek Kobus <jaroslaw.kobus@qt.io>2022-08-01 18:56:27 +0200
committerJarek Kobus <jaroslaw.kobus@qt.io>2022-08-01 17:25:59 +0000
commit0de4e9092f14f16f953a9acbcb2213f1abcad64b (patch)
tree6af8c11f25012eb36b73bd12a770cbf71498b31f /src/plugins/git/gitclient.cpp
parent83739bde384b5a92a8b6a542c6947d38871a016e (diff)
downloadqt-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.cpp108
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;
}
});
}