aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/subversion
diff options
context:
space:
mode:
authorAndre Hartmann <aha_1980@gmx.de>2016-05-20 19:20:49 +0200
committerAndré Hartmann <aha_1980@gmx.de>2016-05-26 12:39:29 +0000
commita5b7ba58f0bdab751a72b2ce647bc59070d88215 (patch)
tree91e7f34738c24ddf4f19890d53d5d6230a7aba18 /src/plugins/subversion
parent5d3823ac4727fb426915b468a031346e5f9ab929 (diff)
SVN: Show conflicted files in submit editor
So far, they didn't show up in the submit editor, so they could be forgotten during a commit. Unlike Git, these files don't prohibit the commit, but at least are shown in the list of modified files and can be diffed. Change-Id: Ia5cac7befb870321d2048622c1fac022d979c745 Reviewed-by: Hugues Delorme <delorme.hugues@fougue.pro> Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'src/plugins/subversion')
-rw-r--r--src/plugins/subversion/subversionplugin.cpp7
-rw-r--r--src/plugins/subversion/subversionplugin.h5
-rw-r--r--src/plugins/subversion/subversionsubmiteditor.cpp15
-rw-r--r--src/plugins/subversion/subversionsubmiteditor.h2
4 files changed, 16 insertions, 13 deletions
diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp
index 0675b3a7af..cdc5bd5d46 100644
--- a/src/plugins/subversion/subversionplugin.cpp
+++ b/src/plugins/subversion/subversionplugin.cpp
@@ -133,7 +133,7 @@ static inline QString debugCodec(const QTextCodec *c)
return c ? QString::fromLatin1(c->name()) : QString::fromLatin1("Null codec");
}
-// Parse "svn status" output for added/modified/deleted files
+// Parse "svn status" output for added/conflicted/deleted/modified files
// "M<7blanks>file"
typedef QList<SubversionSubmitEditor::StatusFilePair> StatusList;
@@ -145,8 +145,9 @@ StatusList parseStatusOutput(const QString &output)
foreach (const QString &l, list) {
const QString line =l.trimmed();
if (line.size() > 8) {
- const QChar state = line.at(0);
- if (state == QLatin1Char('A') || state == QLatin1Char('D') || state == QLatin1Char('M')) {
+ const QString state = line.left(1);
+ if (state == FileAddedC || state == FileConflictedC
+ || state == FileDeletedC || state == FileModifiedC) {
const QString fileName = line.mid(7); // Column 8 starting from svn 1.6
changeSet.push_back(SubversionSubmitEditor::StatusFilePair(QString(state), fileName.trimmed()));
}
diff --git a/src/plugins/subversion/subversionplugin.h b/src/plugins/subversion/subversionplugin.h
index f06a1a9201..da05a072a5 100644
--- a/src/plugins/subversion/subversionplugin.h
+++ b/src/plugins/subversion/subversionplugin.h
@@ -57,6 +57,11 @@ struct SubversionResponse
QString message;
};
+const char FileAddedC[] = "A";
+const char FileConflictedC[] = "C";
+const char FileDeletedC[] = "D";
+const char FileModifiedC[] = "M";
+
class SubversionPlugin : public VcsBase::VcsBasePlugin
{
Q_OBJECT
diff --git a/src/plugins/subversion/subversionsubmiteditor.cpp b/src/plugins/subversion/subversionsubmiteditor.cpp
index e28253319c..213c7ec4dc 100644
--- a/src/plugins/subversion/subversionsubmiteditor.cpp
+++ b/src/plugins/subversion/subversionsubmiteditor.cpp
@@ -24,16 +24,12 @@
****************************************************************************/
#include "subversionsubmiteditor.h"
+#include "subversionplugin.h"
#include <coreplugin/idocument.h>
#include <vcsbase/submiteditorwidget.h>
#include <vcsbase/submitfilemodel.h>
-static const char FileAddedC[] = "A";
-static const char FileConflictedC[] = "C";
-static const char FileDeletedC[] = "D";
-static const char FileModifiedC[] = "M";
-
using namespace Subversion::Internal;
SubversionSubmitEditor::SubversionSubmitEditor(const VcsBase::VcsBaseSubmitEditorParameters *parameters) :
@@ -45,7 +41,6 @@ SubversionSubmitEditor::SubversionSubmitEditor(const VcsBase::VcsBaseSubmitEdito
void SubversionSubmitEditor::setStatusList(const QList<StatusFilePair> &statusOutput)
{
- typedef QList<StatusFilePair>::const_iterator ConstIterator;
auto model = new VcsBase::SubmitFileModel(this);
// Hack to allow completion in "description" field : completion needs a root repository, the
// checkScriptWorkingDirectory property is fine (at this point it was set by SubversionPlugin)
@@ -64,9 +59,11 @@ void SubversionSubmitEditor::setStatusList(const QList<StatusFilePair> &statusOu
return VcsBase::SubmitFileModel::FileStatusUnknown;
} );
- const ConstIterator cend = statusOutput.constEnd();
- for (ConstIterator it = statusOutput.constBegin(); it != cend; ++it)
- model->addFile(it->second, it->first);
+ for (const StatusFilePair &pair : statusOutput) {
+ const VcsBase::CheckMode checkMode =
+ (pair.first == FileConflictedC) ? VcsBase::Uncheckable : VcsBase::Unchecked;
+ model->addFile(pair.second, pair.first, checkMode);
+ }
setFileModel(model);
}
diff --git a/src/plugins/subversion/subversionsubmiteditor.h b/src/plugins/subversion/subversionsubmiteditor.h
index 27b0918cef..f031f086cb 100644
--- a/src/plugins/subversion/subversionsubmiteditor.h
+++ b/src/plugins/subversion/subversionsubmiteditor.h
@@ -40,7 +40,7 @@ public:
static QString fileFromStatusLine(const QString &statusLine);
- // A list of ( 'A','M','D') status indicators and file names.
+ // A list of ( 'A','C','D','M') status indicators and file names.
typedef QPair<QString, QString> StatusFilePair;
void setStatusList(const QList<StatusFilePair> &statusOutput);