Commit c670a66f authored by Orgad Shaneh's avatar Orgad Shaneh

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: default avatarTobias Hunger <tobias.hunger@digia.com>
parent 63439a5f
......@@ -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)
......
......@@ -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,
......
......@@ -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);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment