diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp index 0675b3a7af7..cdc5bd5d462 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 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 f06a1a9201b..da05a072a5b 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 e28253319ca..213c7ec4dc7 100644 --- a/src/plugins/subversion/subversionsubmiteditor.cpp +++ b/src/plugins/subversion/subversionsubmiteditor.cpp @@ -24,16 +24,12 @@ ****************************************************************************/ #include "subversionsubmiteditor.h" +#include "subversionplugin.h" #include #include #include -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 &statusOutput) { - typedef QList::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 &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 27b0918cefe..f031f086cb1 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 StatusFilePair; void setStatusList(const QList &statusOutput);