summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2014-11-02 22:10:15 +0200
committerOrgad Shaneh <orgads@gmail.com>2014-11-03 09:23:57 +0100
commit9dbc785a80f4d44adddf1f7afa634b86ccbe481f (patch)
tree900756324ac698e85e08c7ff7fac34c629ef0222
parent2259aa12f560e6cddae8958b9a67771fca75d203 (diff)
downloadqt-creator-9dbc785a80f4d44adddf1f7afa634b86ccbe481f.tar.gz
DiffEditor: Fix parsing of dirty submodule diff
It has no index. Change-Id: Ifbc06045f3b39245288d15bdf44f8053fe443bc8 Reviewed-by: Jarek Kobus <jaroslaw.kobus@digia.com>
-rw-r--r--src/plugins/diffeditor/diffeditorplugin.cpp26
-rw-r--r--src/plugins/diffeditor/diffutils.cpp58
2 files changed, 55 insertions, 29 deletions
diff --git a/src/plugins/diffeditor/diffeditorplugin.cpp b/src/plugins/diffeditor/diffeditorplugin.cpp
index f8f2ce4183..fc88e8fffd 100644
--- a/src/plugins/diffeditor/diffeditorplugin.cpp
+++ b/src/plugins/diffeditor/diffeditorplugin.cpp
@@ -871,6 +871,32 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
QTest::newRow("Multiple renames") << patch
<< fileDataList6;
+ //////////////
+
+ // Dirty submodule
+ patch = _("diff --git a/src/shared/qbs b/src/shared/qbs\n"
+ "--- a/src/shared/qbs\n"
+ "+++ b/src/shared/qbs\n"
+ "@@ -1 +1 @@\n"
+ "-Subproject commit eda76354077a427d692fee05479910de31040d3f\n"
+ "+Subproject commit eda76354077a427d692fee05479910de31040d3f-dirty\n"
+ );
+ fileData1 = FileData();
+ fileData1.leftFileInfo = DiffFileInfo(_("src/shared/qbs"));
+ fileData1.rightFileInfo = DiffFileInfo(_("src/shared/qbs"));
+ chunkData1.leftStartingLineNumber = 0;
+ chunkData1.rightStartingLineNumber = 0;
+ rows1.clear();
+ rows1 << RowData(_("Subproject commit eda76354077a427d692fee05479910de31040d3f"),
+ _("Subproject commit eda76354077a427d692fee05479910de31040d3f-dirty"));
+ chunkData1.rows = rows1;
+ fileData1.chunks.clear();
+ fileData1.chunks << chunkData1;
+
+ QList<FileData> fileDataList7;
+ fileDataList7 << fileData1;
+ QTest::newRow("Dirty submodule") << patch
+ << fileDataList7;
}
void DiffEditor::Internal::DiffEditorPlugin::testReadPatch()
diff --git a/src/plugins/diffeditor/diffutils.cpp b/src/plugins/diffeditor/diffutils.cpp
index b5ed3a6209..589c4ddb84 100644
--- a/src/plugins/diffeditor/diffutils.cpp
+++ b/src/plugins/diffeditor/diffutils.cpp
@@ -918,39 +918,39 @@ static FileData readGitHeaderAndChunks(const QString &headerAndChunks,
fileData.rightFileInfo.typeInfo = indexRegExp.cap(2);
patch.remove(0, indexRegExp.matchedLength());
+ }
- const QRegExp leftFileRegExp(QLatin1String("^-{3} ") // "--- "
- + leftFileName // "a/fileName" or "/dev/null"
- + QLatin1String("(?:\\t[^\\n]*)*\\n")); // optionally followed by: \t anything \t anything ...)
- const QRegExp rightFileRegExp(QLatin1String("^\\+{3} ") // "+++ "
- + rightFileName // "b/fileName" or "/dev/null"
- + QLatin1String("(?:\\t[^\\n]*)*\\n")); // optionally followed by: \t anything \t anything ...)
- const QRegExp binaryRegExp(QLatin1String("^Binary files ")
- + leftFileName
- + QLatin1String(" and ")
- + rightFileName
- + QLatin1String(" differ$"));
-
- // empty or followed either by leftFileRegExp or by binaryRegExp
- if (patch.isEmpty() && (fileData.fileOperation == FileData::NewFile
- || fileData.fileOperation == FileData::DeleteFile)) {
- readOk = true;
- } else if (leftFileRegExp.indexIn(patch) == 0) {
- patch.remove(0, leftFileRegExp.matchedLength());
+ const QRegExp leftFileRegExp(QLatin1String("^-{3} ") // "--- "
+ + leftFileName // "a/fileName" or "/dev/null"
+ + QLatin1String("(?:\\t[^\\n]*)*\\n")); // optionally followed by: \t anything \t anything ...)
+ const QRegExp rightFileRegExp(QLatin1String("^\\+{3} ") // "+++ "
+ + rightFileName // "b/fileName" or "/dev/null"
+ + QLatin1String("(?:\\t[^\\n]*)*\\n")); // optionally followed by: \t anything \t anything ...)
+ const QRegExp binaryRegExp(QLatin1String("^Binary files ")
+ + leftFileName
+ + QLatin1String(" and ")
+ + rightFileName
+ + QLatin1String(" differ$"));
+
+ // empty or followed either by leftFileRegExp or by binaryRegExp
+ if (patch.isEmpty() && (fileData.fileOperation == FileData::NewFile
+ || fileData.fileOperation == FileData::DeleteFile)) {
+ readOk = true;
+ } else if (leftFileRegExp.indexIn(patch) == 0) {
+ patch.remove(0, leftFileRegExp.matchedLength());
- // followed by rightFileRegExp
- if (rightFileRegExp.indexIn(patch) == 0) {
- patch.remove(0, rightFileRegExp.matchedLength());
+ // followed by rightFileRegExp
+ if (rightFileRegExp.indexIn(patch) == 0) {
+ patch.remove(0, rightFileRegExp.matchedLength());
- fileData.chunks = readChunks(patch,
- ignoreWhitespace,
- &fileData.lastChunkAtTheEndOfFile,
- &readOk);
- }
- } else if (binaryRegExp.indexIn(patch) == 0) {
- readOk = true;
- fileData.binaryFiles = true;
+ fileData.chunks = readChunks(patch,
+ ignoreWhitespace,
+ &fileData.lastChunkAtTheEndOfFile,
+ &readOk);
}
+ } else if (binaryRegExp.indexIn(patch) == 0) {
+ readOk = true;
+ fileData.binaryFiles = true;
}
if (ok)