diff options
| author | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2014-11-02 22:10:15 +0200 |
|---|---|---|
| committer | Orgad Shaneh <orgads@gmail.com> | 2014-11-03 09:23:57 +0100 |
| commit | 9dbc785a80f4d44adddf1f7afa634b86ccbe481f (patch) | |
| tree | 900756324ac698e85e08c7ff7fac34c629ef0222 | |
| parent | 2259aa12f560e6cddae8958b9a67771fca75d203 (diff) | |
| download | qt-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.cpp | 26 | ||||
| -rw-r--r-- | src/plugins/diffeditor/diffutils.cpp | 58 |
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) |
