forked from qt-creator/qt-creator
DiffEditor: Fix parsing of dirty submodule diff
It has no index. Change-Id: Ifbc06045f3b39245288d15bdf44f8053fe443bc8 Reviewed-by: Jarek Kobus <jaroslaw.kobus@digia.com>
This commit is contained in:
committed by
Orgad Shaneh
parent
2259aa12f5
commit
9dbc785a80
@@ -871,6 +871,32 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
|
|||||||
QTest::newRow("Multiple renames") << patch
|
QTest::newRow("Multiple renames") << patch
|
||||||
<< fileDataList6;
|
<< 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()
|
void DiffEditor::Internal::DiffEditorPlugin::testReadPatch()
|
||||||
|
|||||||
@@ -918,39 +918,39 @@ static FileData readGitHeaderAndChunks(const QString &headerAndChunks,
|
|||||||
fileData.rightFileInfo.typeInfo = indexRegExp.cap(2);
|
fileData.rightFileInfo.typeInfo = indexRegExp.cap(2);
|
||||||
|
|
||||||
patch.remove(0, indexRegExp.matchedLength());
|
patch.remove(0, indexRegExp.matchedLength());
|
||||||
|
}
|
||||||
|
|
||||||
const QRegExp leftFileRegExp(QLatin1String("^-{3} ") // "--- "
|
const QRegExp leftFileRegExp(QLatin1String("^-{3} ") // "--- "
|
||||||
+ leftFileName // "a/fileName" or "/dev/null"
|
+ leftFileName // "a/fileName" or "/dev/null"
|
||||||
+ QLatin1String("(?:\\t[^\\n]*)*\\n")); // optionally followed by: \t anything \t anything ...)
|
+ QLatin1String("(?:\\t[^\\n]*)*\\n")); // optionally followed by: \t anything \t anything ...)
|
||||||
const QRegExp rightFileRegExp(QLatin1String("^\\+{3} ") // "+++ "
|
const QRegExp rightFileRegExp(QLatin1String("^\\+{3} ") // "+++ "
|
||||||
+ rightFileName // "b/fileName" or "/dev/null"
|
+ rightFileName // "b/fileName" or "/dev/null"
|
||||||
+ QLatin1String("(?:\\t[^\\n]*)*\\n")); // optionally followed by: \t anything \t anything ...)
|
+ QLatin1String("(?:\\t[^\\n]*)*\\n")); // optionally followed by: \t anything \t anything ...)
|
||||||
const QRegExp binaryRegExp(QLatin1String("^Binary files ")
|
const QRegExp binaryRegExp(QLatin1String("^Binary files ")
|
||||||
+ leftFileName
|
+ leftFileName
|
||||||
+ QLatin1String(" and ")
|
+ QLatin1String(" and ")
|
||||||
+ rightFileName
|
+ rightFileName
|
||||||
+ QLatin1String(" differ$"));
|
+ QLatin1String(" differ$"));
|
||||||
|
|
||||||
// empty or followed either by leftFileRegExp or by binaryRegExp
|
// empty or followed either by leftFileRegExp or by binaryRegExp
|
||||||
if (patch.isEmpty() && (fileData.fileOperation == FileData::NewFile
|
if (patch.isEmpty() && (fileData.fileOperation == FileData::NewFile
|
||||||
|| fileData.fileOperation == FileData::DeleteFile)) {
|
|| fileData.fileOperation == FileData::DeleteFile)) {
|
||||||
readOk = true;
|
readOk = true;
|
||||||
} else if (leftFileRegExp.indexIn(patch) == 0) {
|
} else if (leftFileRegExp.indexIn(patch) == 0) {
|
||||||
patch.remove(0, leftFileRegExp.matchedLength());
|
patch.remove(0, leftFileRegExp.matchedLength());
|
||||||
|
|
||||||
// followed by rightFileRegExp
|
// followed by rightFileRegExp
|
||||||
if (rightFileRegExp.indexIn(patch) == 0) {
|
if (rightFileRegExp.indexIn(patch) == 0) {
|
||||||
patch.remove(0, rightFileRegExp.matchedLength());
|
patch.remove(0, rightFileRegExp.matchedLength());
|
||||||
|
|
||||||
fileData.chunks = readChunks(patch,
|
fileData.chunks = readChunks(patch,
|
||||||
ignoreWhitespace,
|
ignoreWhitespace,
|
||||||
&fileData.lastChunkAtTheEndOfFile,
|
&fileData.lastChunkAtTheEndOfFile,
|
||||||
&readOk);
|
&readOk);
|
||||||
}
|
|
||||||
} else if (binaryRegExp.indexIn(patch) == 0) {
|
|
||||||
readOk = true;
|
|
||||||
fileData.binaryFiles = true;
|
|
||||||
}
|
}
|
||||||
|
} else if (binaryRegExp.indexIn(patch) == 0) {
|
||||||
|
readOk = true;
|
||||||
|
fileData.binaryFiles = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ok)
|
if (ok)
|
||||||
|
|||||||
Reference in New Issue
Block a user