From 177f7740363d5e16561af166ddb42772e40c5eb2 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh <orgad.shaneh@audiocodes.com> Date: Tue, 22 Jan 2013 21:27:54 +0200 Subject: [PATCH] Git: Use StashGuard for merge and rebase Change-Id: I7c9059396aaac78c769518b34c7bf68bfe9932ec Reviewed-by: Tobias Hunger <tobias.hunger@digia.com> Reviewed-by: Petar Perisin <petar.perisin@gmail.com> --- src/plugins/git/branchdialog.cpp | 22 ++++++---------------- src/plugins/git/gitclient.cpp | 4 ++-- src/plugins/git/gitclient.h | 2 +- 3 files changed, 9 insertions(+), 19 deletions(-) diff --git a/src/plugins/git/branchdialog.cpp b/src/plugins/git/branchdialog.cpp index d6f7bc20965..28e72fc8381 100644 --- a/src/plugins/git/branchdialog.cpp +++ b/src/plugins/git/branchdialog.cpp @@ -255,14 +255,9 @@ void BranchDialog::merge() QTC_CHECK(idx != m_model->currentBranch()); // otherwise the button would not be enabled! const QString branch = m_model->branchName(idx); - GitClient *gitClient = GitPlugin::instance()->gitClient(); - QString stashMessage; - - if (gitClient->gitStatus(m_repository, StatusMode(NoUntracked | NoSubmodules)) == GitClient::StatusChanged) - gitClient->ensureStash(m_repository, QLatin1String("merge"), false, &stashMessage); - - if (gitClient->synchronousMerge(m_repository, branch) && !stashMessage.isEmpty()) - gitClient->stashPop(m_repository, stashMessage); + GitClient::StashGuard stashGuard(m_repository, QLatin1String("merge"), false); + if (!GitPlugin::instance()->gitClient()->synchronousMerge(m_repository, branch)) + stashGuard.preventPop(); } void BranchDialog::rebase() @@ -272,14 +267,9 @@ void BranchDialog::rebase() QTC_CHECK(idx != m_model->currentBranch()); // otherwise the button would not be enabled! const QString baseBranch = m_model->branchName(idx); - GitClient *gitClient = GitPlugin::instance()->gitClient(); - QString stashMessage; - - if (gitClient->gitStatus(m_repository, StatusMode(NoUntracked | NoSubmodules)) == GitClient::StatusChanged) - gitClient->ensureStash(m_repository, QLatin1String("rebase"), false, &stashMessage); - - if (gitClient->synchronousRebase(m_repository, baseBranch) && !stashMessage.isEmpty()) - gitClient->stashPop(m_repository, stashMessage); + GitClient::StashGuard stashGuard(m_repository, QLatin1String("rebase"), false); + if (!GitPlugin::instance()->gitClient()->synchronousRebase(m_repository, baseBranch)) + stashGuard.preventPop(); } void BranchDialog::changeEvent(QEvent *e) diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index d6a13095086..283b52a66a7 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -2530,13 +2530,13 @@ unsigned GitClient::synchronousGitVersion(QString *errorMessage) const return version(major, minor, patch); } -GitClient::StashGuard::StashGuard(const QString &workingDirectory, const QString &keyword) : +GitClient::StashGuard::StashGuard(const QString &workingDirectory, const QString &keyword, bool askUser) : pop(true), workingDir(workingDirectory) { client = GitPlugin::instance()->gitClient(); QString errorMessage; - stashResult = client->ensureStash(workingDir, keyword, true, &message, &errorMessage); + stashResult = client->ensureStash(workingDir, keyword, askUser, &message, &errorMessage); if (stashResult == GitClient::StashFailed) VcsBase::VcsBaseOutputWindow::instance()->appendError(errorMessage); } diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h index 9f77b0501b0..9c3e0bb2c75 100644 --- a/src/plugins/git/gitclient.h +++ b/src/plugins/git/gitclient.h @@ -88,7 +88,7 @@ public: class StashGuard { public: - StashGuard(const QString &workingDirectory, const QString &keyword); + StashGuard(const QString &workingDirectory, const QString &keyword, bool askUser = true); ~StashGuard(); void preventPop(); -- GitLab