From b8df1a9b55f34e11d507d76eead145c45f8094d3 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh <orgad.shaneh@audiocodes.com> Date: Sun, 8 Jun 2014 23:34:01 +0300 Subject: [PATCH] DiffEditor: Support patch with empty new/deleted file Change-Id: Ic0341239309be3eae1ab2faf296bc6a698acebb0 Reviewed-by: Jarek Kobus <jaroslaw.kobus@digia.com> --- src/plugins/diffeditor/diffeditorplugin.cpp | 16 +++++++++++++++- src/plugins/diffeditor/diffutils.cpp | 6 ++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/plugins/diffeditor/diffeditorplugin.cpp b/src/plugins/diffeditor/diffeditorplugin.cpp index a8c2c46b64c..7dbf1bb28b7 100644 --- a/src/plugins/diffeditor/diffeditorplugin.cpp +++ b/src/plugins/diffeditor/diffeditorplugin.cpp @@ -468,6 +468,12 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data() "+++ /dev/null\n" "@@ -1 +0,0 @@\n" "-foo\n" + "diff --git a/empty b/empty\n" + "new file mode 100644\n" + "index 0000000..e69de29\n" + "diff --git a/empty b/empty\n" + "deleted file mode 100644\n" + "index e69de29..0000000\n" ); FileData fileData1; @@ -551,8 +557,16 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data() chunkData4.rows = rows4; fileData4.chunks.append(chunkData4); + FileData fileData5; + fileData5.leftFileInfo = DiffFileInfo(QLatin1String("empty"), QLatin1String("0000000")); + fileData5.rightFileInfo = DiffFileInfo(QLatin1String("empty"), QLatin1String("e69de29")); + + FileData fileData6; + fileData6.leftFileInfo = DiffFileInfo(QLatin1String("empty"), QLatin1String("e69de29")); + fileData6.rightFileInfo = DiffFileInfo(QLatin1String("empty"), QLatin1String("0000000")); + QList<FileData> fileDataList; - fileDataList << fileData1 << fileData2 << fileData3 << fileData4; + fileDataList << fileData1 << fileData2 << fileData3 << fileData4 << fileData5 << fileData6; QTest::newRow("Git patch") << patch << fileDataList; diff --git a/src/plugins/diffeditor/diffutils.cpp b/src/plugins/diffeditor/diffutils.cpp index 06e3c2c5781..f6b8de8c67a 100644 --- a/src/plugins/diffeditor/diffutils.cpp +++ b/src/plugins/diffeditor/diffutils.cpp @@ -847,8 +847,10 @@ static FileData readGitHeaderAndChunks(const QString &headerAndChunks, + rightFileName + QLatin1String(" differ$)")); - // followed either by leftFileRegExp or by binaryRegExp - if (leftFileRegExp.indexIn(patch, 0) == 0) { + // empty or followed either by leftFileRegExp or by binaryRegExp + if (patch.isEmpty() && (fileData.leftFileInfo.devNull || fileData.rightFileInfo.devNull)) { + readOk = true; + } else if (leftFileRegExp.indexIn(patch, 0) == 0) { patch = patch.mid(leftFileRegExp.capturedTexts().at(1).count()); // followed by rightFileRegExp -- GitLab