summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2013-01-22 21:27:54 +0200
committerOrgad Shaneh <orgad.shaneh@audiocodes.com>2013-01-24 12:32:40 +0100
commit177f7740363d5e16561af166ddb42772e40c5eb2 (patch)
tree0334352a706a388b008814b0262120f280f9861d
parent5551c1e906c617ba1214b97ecdc3a5fa04f71939 (diff)
downloadqt-creator-177f7740363d5e16561af166ddb42772e40c5eb2.tar.gz
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>
-rw-r--r--src/plugins/git/branchdialog.cpp22
-rw-r--r--src/plugins/git/gitclient.cpp4
-rw-r--r--src/plugins/git/gitclient.h2
3 files changed, 9 insertions, 19 deletions
diff --git a/src/plugins/git/branchdialog.cpp b/src/plugins/git/branchdialog.cpp
index d6f7bc2096..28e72fc838 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 d6a1309508..283b52a66a 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 9f77b0501b..9c3e0bb2c7 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();