summaryrefslogtreecommitdiff
path: root/src/plugins/diffeditor/diffutils.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2014-11-11 16:27:23 +0100
committerFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2014-11-13 09:10:22 +0100
commit9605244f6d73aced9ec33eea105030ae23eea896 (patch)
treeec52b6659c211c36be2c07beecd09b1e2aef9132 /src/plugins/diffeditor/diffutils.cpp
parente123f5a4d9ec164073d75fd926acadd9d4b2243b (diff)
downloadqt-creator-9605244f6d73aced9ec33eea105030ae23eea896.tar.gz
DiffEditor: Save description along with diff.
Save complete, git-applicable patch when saving the result of for example 'git show'. Strips some Creator-specific tags off the description and reformats the description such that it is accepted by git. Change-Id: I739d85a7263f97e2149a2794974ba026f2eca067 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Diffstat (limited to 'src/plugins/diffeditor/diffutils.cpp')
-rw-r--r--src/plugins/diffeditor/diffutils.cpp39
1 files changed, 22 insertions, 17 deletions
diff --git a/src/plugins/diffeditor/diffutils.cpp b/src/plugins/diffeditor/diffutils.cpp
index 3f9c43a20d..f356e4f366 100644
--- a/src/plugins/diffeditor/diffutils.cpp
+++ b/src/plugins/diffeditor/diffutils.cpp
@@ -31,6 +31,7 @@
#include "diffutils.h"
#include "differ.h"
#include <QStringList>
+#include <QTextStream>
#include "texteditor/fontsettings.h"
namespace DiffEditor {
@@ -483,31 +484,35 @@ QString DiffUtils::makePatch(const ChunkData &chunkData,
return diffText;
}
-QString DiffUtils::makePatch(const QList<FileData> &fileDataList)
+QString DiffUtils::makePatch(const QList<FileData> &fileDataList, unsigned formatFlags)
{
QString diffText;
+ QTextStream str(&diffText);
for (int i = 0; i < fileDataList.count(); i++) {
const FileData &fileData = fileDataList.at(i);
-
+ if (formatFlags & GitFormat) {
+ str << "diff --git a/" << fileData.leftFileInfo.fileName
+ << " b/" << fileData.rightFileInfo.fileName << '\n';
+ }
if (fileData.binaryFiles) {
- const QString binaryLine = QLatin1String("Binary files ")
- + fileData.leftFileInfo.fileName
- + QLatin1String(" and ")
- + fileData.rightFileInfo.fileName
- + QLatin1String(" differ\n");
- diffText += binaryLine;
+ str << "Binary files ";
+ if (formatFlags & AddLevel)
+ str << "a/";
+ str << fileData.leftFileInfo.fileName << " and ";
+ if (formatFlags & AddLevel)
+ str << "b/";
+ str << fileData.rightFileInfo.fileName << " differ\n";
} else {
- const QString leftFileInfo = QLatin1String("--- ")
- + fileData.leftFileInfo.fileName + QLatin1Char('\n');
- const QString rightFileInfo = QLatin1String("+++ ")
- + fileData.rightFileInfo.fileName + QLatin1Char('\n');
-
- diffText += leftFileInfo;
- diffText += rightFileInfo;
-
+ str << "--- ";
+ if (formatFlags & AddLevel)
+ str << "a/";
+ str << fileData.leftFileInfo.fileName << "\n+++ ";
+ if (formatFlags & AddLevel)
+ str << "b/";
+ str << fileData.rightFileInfo.fileName << '\n';
for (int j = 0; j < fileData.chunks.count(); j++) {
- diffText += makePatch(fileData.chunks.at(j),
+ str << makePatch(fileData.chunks.at(j),
(j == fileData.chunks.count() - 1)
&& fileData.lastChunkAtTheEndOfFile);
}