diff options
author | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2013-01-22 21:10:43 +0200 |
---|---|---|
committer | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2013-01-24 12:32:17 +0100 |
commit | c670a66fe10e20c92f9a7a40d68722f28b3af62b (patch) | |
tree | 67e9cbe740f0bfe85ba7ce7ed3baa1944d48b977 | |
parent | 63439a5f2164d608f552913d976cd492f331a8da (diff) | |
download | qt-creator-c670a66fe10e20c92f9a7a40d68722f28b3af62b.tar.gz |
Git: Explicitly pop stored stashes
If the user created another stashed between save and
pop, this stash will be restored instead of the intended
one.
Change-Id: I605c9f440345d8c7e0876f4f60daa7146bebb212
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
-rw-r--r-- | src/plugins/git/branchdialog.cpp | 8 | ||||
-rw-r--r-- | src/plugins/git/gitclient.cpp | 9 | ||||
-rw-r--r-- | src/plugins/git/gitclient.h | 1 |
3 files changed, 13 insertions, 5 deletions
diff --git a/src/plugins/git/branchdialog.cpp b/src/plugins/git/branchdialog.cpp index e017b39889..d6f7bc2096 100644 --- a/src/plugins/git/branchdialog.cpp +++ b/src/plugins/git/branchdialog.cpp @@ -261,8 +261,8 @@ void BranchDialog::merge() 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); + if (gitClient->synchronousMerge(m_repository, branch) && !stashMessage.isEmpty()) + gitClient->stashPop(m_repository, stashMessage); } void BranchDialog::rebase() @@ -278,8 +278,8 @@ void BranchDialog::rebase() 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); + if (gitClient->synchronousRebase(m_repository, baseBranch) && !stashMessage.isEmpty()) + gitClient->stashPop(m_repository, stashMessage); } void BranchDialog::changeEvent(QEvent *e) diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index f1418121a6..1a82c4c4a7 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -2277,14 +2277,21 @@ QString GitClient::msgNoChangedFiles() return tr("There are no modified files."); } -void GitClient::stashPop(const QString &workingDirectory) +void GitClient::stashPop(const QString &workingDirectory, const QString &stash) { QStringList arguments(QLatin1String("stash")); arguments << QLatin1String("pop"); + if (!stash.isEmpty()) + arguments << stash; VcsBase::Command *cmd = executeGit(workingDirectory, arguments, 0, true); connectRepositoryChanged(workingDirectory, cmd); } +void GitClient::stashPop(const QString &workingDirectory) +{ + stashPop(workingDirectory, QString()); +} + bool GitClient::synchronousStashRestore(const QString &workingDirectory, const QString &stash, bool pop, diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h index 9b002c683b..9e2469c5c6 100644 --- a/src/plugins/git/gitclient.h +++ b/src/plugins/git/gitclient.h @@ -193,6 +193,7 @@ public: void synchronousSubversionFetch(const QString &workingDirectory); void subversionLog(const QString &workingDirectory); + void stashPop(const QString &workingDirectory, const QString &stash); void stashPop(const QString &workingDirectory); void revert(const QStringList &files, bool revertStaging); void branchList(const QString &workingDirectory); |