diff options
Diffstat (limited to 'src/plugins/git/gitclient.cpp')
-rw-r--r-- | src/plugins/git/gitclient.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 416c29e5d3..01f38b8b7c 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -38,6 +38,7 @@ #include "mergetool.h" #include "branchadddialog.h" +#include <gerrit/gerritplugin.h> #include <vcsbase/submitfilemodel.h> #include <coreplugin/editormanager/editormanager.h> @@ -2526,12 +2527,13 @@ QProcessEnvironment GitClient::processEnvironment() const return environment; } -bool GitClient::beginStashScope(const QString &workingDirectory, const QString &command, StashFlag flag) +bool GitClient::beginStashScope(const QString &workingDirectory, const QString &command, + StashFlag flag, PushAction pushAction) { const QString repoDirectory = findRepositoryForDirectory(workingDirectory); QTC_ASSERT(!repoDirectory.isEmpty(), return false); StashInfo &stashInfo = m_stashInfo[repoDirectory]; - return stashInfo.init(repoDirectory, command, flag); + return stashInfo.init(repoDirectory, command, flag, pushAction); } GitClient::StashInfo &GitClient::stashInfo(const QString &workingDirectory) @@ -3807,15 +3809,17 @@ unsigned GitClient::synchronousGitVersion(QString *errorMessage) const } GitClient::StashInfo::StashInfo() : - m_client(GitPlugin::instance()->gitClient()) + m_client(GitPlugin::instance()->gitClient()), + m_pushAction(NoPush) { } bool GitClient::StashInfo::init(const QString &workingDirectory, const QString &command, - StashFlag flag) + StashFlag flag, PushAction pushAction) { m_workingDir = workingDirectory; m_flags = flag; + m_pushAction = pushAction; QString errorMessage; QString statusOutput; switch (m_client->gitStatus(m_workingDir, StatusMode(NoUntracked | NoSubmodules), @@ -3914,6 +3918,13 @@ void GitClient::StashInfo::end() if (m_client->stashNameFromMessage(m_workingDir, m_message, &stashName)) m_client->stashPop(m_workingDir, stashName); } + + if (m_pushAction == NormalPush) + m_client->push(m_workingDir); + else if (m_pushAction == PushToGerrit) + GitPlugin::instance()->gerritPlugin()->push(m_workingDir); + + m_pushAction = NoPush; m_stashResult = NotStashed; } } // namespace Internal |