m_errorMsg(),
m_operationCompletedMsg(),
m_contextDir(),
- m_contextItems()
+ m_contextItems(),
+ m_tempFile()
{
m_updateAction = new KAction(this);
m_updateAction->setIcon(KIcon("view-refresh"));
dialog.restoreDialogSize(dialogConfig);
if (dialog.exec() == QDialog::Accepted) {
- const QString description = editor->toPlainText();
- execSvnCommand("commit -m " + KShell::quoteArg(description),
+ // Write the commit description into a temporary file, so
+ // that it can be read by the command "svn commit -F". The temporary
+ // file must stay alive until slotOperationCompleted() is invoked and will
+ // be destroyed when the revision plugin is destructed.
+ if (!m_tempFile.open()) {
+ emit errorMessage(i18nc("@info:status", "Commit of SVN changes failed."));
+ return;
+ }
+
+ QTextStream out(&m_tempFile);
+ const QString fileName = m_tempFile.fileName();
+ out << editor->toPlainText();
+ m_tempFile.close();
+
+ execSvnCommand("commit -F " + KShell::quoteArg(fileName),
i18nc("@info:status", "Committing SVN changes..."),
i18nc("@info:status", "Commit of SVN changes failed."),
i18nc("@info:status", "Committed SVN changes."));
connect(process, SIGNAL(error(QProcess::ProcessError)),
this, SLOT(slotOperationError()));
- QStringList arguments;
- arguments << m_command;
+ const QString program = "svn " + m_command + ' ';
if (!m_contextDir.isEmpty()) {
- process->start("svn", arguments << KShell::quoteArg(m_contextDir));
+ process->start(program + KShell::quoteArg(m_contextDir));
m_contextDir.clear();
} else {
const KFileItem item = m_contextItems.takeLast();
- process->start("svn", arguments << KShell::quoteArg(item.localPath()));
+ process->start(program + KShell::quoteArg(item.localPath()));
// the remaining items of m_contextItems will be executed
// after the process has finished (see slotOperationFinished())
}