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
|
||||
<< 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()
|
||||
|
||||
@@ -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$"));
|
||||
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());
|
||||
// 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)
|
||||
|
||||
Reference in New Issue
Block a user