aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/subversion
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2019-01-16 23:45:22 +0200
committerOrgad Shaneh <orgads@gmail.com>2019-01-20 20:06:19 +0000
commit78b551e756262f9a8f96612533937c08787a0583 (patch)
treea1d962910632d2b6ac9494ea58956c6e96d52df4 /src/plugins/subversion
parent50ce82d26a4de26adc12c24dcf85ce31ca1eb0a9 (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.cpp19
-rw-r--r--src/plugins/subversion/subversionclient.h8
-rw-r--r--src/plugins/subversion/subversionplugin.cpp13
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;
}