Subversion: Do not close the editor if commit fails

Fixes: QTCREATORBUG-15227
Change-Id: I975c88d686e75bbb33e827a4a591b172b4f68bbd
Reviewed-by: André Hartmann <aha_1980@gmx.de>
This commit is contained in:
Orgad Shaneh
2019-01-16 23:45:22 +02:00
committed by Orgad Shaneh
parent 50ce82d26a
commit 78b551e756
3 changed files with 17 additions and 23 deletions

View File

@@ -76,10 +76,10 @@ SubversionClient::SubversionClient() : VcsBaseClient(new SubversionSettings)
}); });
} }
VcsCommand *SubversionClient::createCommitCmd(const QString &repositoryRoot, bool SubversionClient::doCommit(const QString &repositoryRoot,
const QStringList &files, const QStringList &files,
const QString &commitMessageFile, const QString &commitMessageFile,
const QStringList &extraOptions) const const QStringList &extraOptions) const
{ {
const QStringList svnExtraOptions = const QStringList svnExtraOptions =
QStringList(extraOptions) QStringList(extraOptions)
@@ -88,11 +88,11 @@ VcsCommand *SubversionClient::createCommitCmd(const QString &repositoryRoot,
<< QLatin1String("--encoding") << QLatin1String("UTF-8") << QLatin1String("--encoding") << QLatin1String("UTF-8")
<< QLatin1String("--file") << commitMessageFile; << QLatin1String("--file") << commitMessageFile;
VcsCommand *cmd = createCommand(repositoryRoot);
cmd->addFlags(VcsCommand::ShowStdOut);
QStringList args(vcsCommandString(CommitCommand)); QStringList args(vcsCommandString(CommitCommand));
cmd->addJob(vcsBinary(), args << svnExtraOptions << escapeFiles(files)); SynchronousProcessResponse resp =
return cmd; vcsSynchronousExec(repositoryRoot, args << svnExtraOptions << escapeFiles(files),
VcsCommand::ShowStdOut | VcsCommand::NoFullySync);
return resp.result == SynchronousProcessResponse::Finished;
} }
void SubversionClient::commit(const QString &repositoryRoot, void SubversionClient::commit(const QString &repositoryRoot,
@@ -103,8 +103,7 @@ void SubversionClient::commit(const QString &repositoryRoot,
if (Subversion::Constants::debug) if (Subversion::Constants::debug)
qDebug() << Q_FUNC_INFO << commitMessageFile << files; qDebug() << Q_FUNC_INFO << commitMessageFile << files;
VcsCommand *cmd = createCommitCmd(repositoryRoot, files, commitMessageFile, extraOptions); doCommit(repositoryRoot, files, commitMessageFile, extraOptions);
cmd->execute();
} }
Id SubversionClient::vcsEditorKind(VcsCommandTag cmd) const Id SubversionClient::vcsEditorKind(VcsCommandTag cmd) const

View File

@@ -43,10 +43,10 @@ class SubversionClient : public VcsBase::VcsBaseClient
public: public:
SubversionClient(); SubversionClient();
VcsBase::VcsCommand *createCommitCmd(const QString &repositoryRoot, bool doCommit(const QString &repositoryRoot,
const QStringList &files, const QStringList &files,
const QString &commitMessageFile, const QString &commitMessageFile,
const QStringList &extraOptions = QStringList()) const; const QStringList &extraOptions = QStringList()) const;
void commit(const QString &repositoryRoot, void commit(const QString &repositoryRoot,
const QStringList &files, const QStringList &files,
const QString &commitMessageFile, const QString &commitMessageFile,

View File

@@ -442,15 +442,10 @@ bool SubversionPlugin::submitEditorAboutToClose()
bool closeEditor = true; bool closeEditor = true;
if (!fileList.empty()) { if (!fileList.empty()) {
// get message & commit // get message & commit
closeEditor = DocumentManager::saveDocument(editorDocument); closeEditor = DocumentManager::saveDocument(editorDocument)
if (closeEditor) { && m_client->doCommit(m_commitRepository, fileList, m_commitMessageFileName);
VcsCommand *commitCmd = m_client->createCommitCmd(m_commitRepository, if (closeEditor)
fileList, cleanCommitMessageFile();
m_commitMessageFileName);
QObject::connect(commitCmd, &VcsCommand::finished,
this, [this]() { cleanCommitMessageFile(); });
commitCmd->execute();
}
} }
return closeEditor; return closeEditor;
} }