diff options
author | Andre Hartmann <aha_1980@gmx.de> | 2016-05-20 19:20:49 +0200 |
---|---|---|
committer | André Hartmann <aha_1980@gmx.de> | 2016-05-26 12:39:29 +0000 |
commit | a5b7ba58f0bdab751a72b2ce647bc59070d88215 (patch) | |
tree | 91e7f34738c24ddf4f19890d53d5d6230a7aba18 /src/plugins/subversion | |
parent | 5d3823ac4727fb426915b468a031346e5f9ab929 (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.cpp | 7 | ||||
-rw-r--r-- | src/plugins/subversion/subversionplugin.h | 5 | ||||
-rw-r--r-- | src/plugins/subversion/subversionsubmiteditor.cpp | 15 | ||||
-rw-r--r-- | src/plugins/subversion/subversionsubmiteditor.h | 2 |
4 files changed, 16 insertions, 13 deletions
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<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 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 <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 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<QString, QString> StatusFilePair; void setStatusList(const QList<StatusFilePair> &statusOutput); |