diff options
author | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2019-01-16 23:45:22 +0200 |
---|---|---|
committer | Orgad Shaneh <orgads@gmail.com> | 2019-01-20 20:06:19 +0000 |
commit | 78b551e756262f9a8f96612533937c08787a0583 (patch) | |
tree | a1d962910632d2b6ac9494ea58956c6e96d52df4 /src/plugins/subversion | |
parent | 50ce82d26a4de26adc12c24dcf85ce31ca1eb0a9 (diff) |
Subversion: Do not close the editor if commit fails
Fixes: QTCREATORBUG-15227
Change-Id: I975c88d686e75bbb33e827a4a591b172b4f68bbd
Reviewed-by: André Hartmann <aha_1980@gmx.de>
Diffstat (limited to 'src/plugins/subversion')
-rw-r--r-- | src/plugins/subversion/subversionclient.cpp | 19 | ||||
-rw-r--r-- | src/plugins/subversion/subversionclient.h | 8 | ||||
-rw-r--r-- | src/plugins/subversion/subversionplugin.cpp | 13 |
3 files changed, 17 insertions, 23 deletions
diff --git a/src/plugins/subversion/subversionclient.cpp b/src/plugins/subversion/subversionclient.cpp index a2e887239c..ef65246fc3 100644 --- a/src/plugins/subversion/subversionclient.cpp +++ b/src/plugins/subversion/subversionclient.cpp @@ -76,10 +76,10 @@ SubversionClient::SubversionClient() : VcsBaseClient(new SubversionSettings) }); } -VcsCommand *SubversionClient::createCommitCmd(const QString &repositoryRoot, - const QStringList &files, - const QString &commitMessageFile, - const QStringList &extraOptions) const +bool SubversionClient::doCommit(const QString &repositoryRoot, + const QStringList &files, + const QString &commitMessageFile, + const QStringList &extraOptions) const { const QStringList svnExtraOptions = QStringList(extraOptions) @@ -88,11 +88,11 @@ VcsCommand *SubversionClient::createCommitCmd(const QString &repositoryRoot, << QLatin1String("--encoding") << QLatin1String("UTF-8") << QLatin1String("--file") << commitMessageFile; - VcsCommand *cmd = createCommand(repositoryRoot); - cmd->addFlags(VcsCommand::ShowStdOut); QStringList args(vcsCommandString(CommitCommand)); - cmd->addJob(vcsBinary(), args << svnExtraOptions << escapeFiles(files)); - return cmd; + SynchronousProcessResponse resp = + vcsSynchronousExec(repositoryRoot, args << svnExtraOptions << escapeFiles(files), + VcsCommand::ShowStdOut | VcsCommand::NoFullySync); + return resp.result == SynchronousProcessResponse::Finished; } void SubversionClient::commit(const QString &repositoryRoot, @@ -103,8 +103,7 @@ void SubversionClient::commit(const QString &repositoryRoot, if (Subversion::Constants::debug) qDebug() << Q_FUNC_INFO << commitMessageFile << files; - VcsCommand *cmd = createCommitCmd(repositoryRoot, files, commitMessageFile, extraOptions); - cmd->execute(); + doCommit(repositoryRoot, files, commitMessageFile, extraOptions); } Id SubversionClient::vcsEditorKind(VcsCommandTag cmd) const diff --git a/src/plugins/subversion/subversionclient.h b/src/plugins/subversion/subversionclient.h index aa45c124da..00ab1639ee 100644 --- a/src/plugins/subversion/subversionclient.h +++ b/src/plugins/subversion/subversionclient.h @@ -43,10 +43,10 @@ class SubversionClient : public VcsBase::VcsBaseClient public: SubversionClient(); - VcsBase::VcsCommand *createCommitCmd(const QString &repositoryRoot, - const QStringList &files, - const QString &commitMessageFile, - const QStringList &extraOptions = QStringList()) const; + bool doCommit(const QString &repositoryRoot, + const QStringList &files, + const QString &commitMessageFile, + const QStringList &extraOptions = QStringList()) const; void commit(const QString &repositoryRoot, const QStringList &files, const QString &commitMessageFile, diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp index 7aca6cecb9..e9a70d2f9a 100644 --- a/src/plugins/subversion/subversionplugin.cpp +++ b/src/plugins/subversion/subversionplugin.cpp @@ -442,15 +442,10 @@ bool SubversionPlugin::submitEditorAboutToClose() bool closeEditor = true; if (!fileList.empty()) { // get message & commit - closeEditor = DocumentManager::saveDocument(editorDocument); - if (closeEditor) { - VcsCommand *commitCmd = m_client->createCommitCmd(m_commitRepository, - fileList, - m_commitMessageFileName); - QObject::connect(commitCmd, &VcsCommand::finished, - this, [this]() { cleanCommitMessageFile(); }); - commitCmd->execute(); - } + closeEditor = DocumentManager::saveDocument(editorDocument) + && m_client->doCommit(m_commitRepository, fileList, m_commitMessageFileName); + if (closeEditor) + cleanCommitMessageFile(); } return closeEditor; } |