diff --git a/kdevplatform/shell/projectsourcepage.cpp b/kdevplatform/shell/projectsourcepage.cpp --- a/kdevplatform/shell/projectsourcepage.cpp +++ b/kdevplatform/shell/projectsourcepage.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #include diff --git a/kdevplatform/vcs/interfaces/ibasicversioncontrol.h b/kdevplatform/vcs/interfaces/ibasicversioncontrol.h --- a/kdevplatform/vcs/interfaces/ibasicversioncontrol.h +++ b/kdevplatform/vcs/interfaces/ibasicversioncontrol.h @@ -189,12 +189,11 @@ /** * Retrieves a diff between two revisions of a file * - * The diff is in unified diff format for text files by default + * The diff is in unified diff format for text files. */ virtual VcsJob* diff( const QUrl& fileOrDirectory, const VcsRevision& srcRevision, const VcsRevision& dstRevision, - VcsDiff::Type = VcsDiff::DiffUnified, IBasicVersionControl::RecursionMode recursion = IBasicVersionControl::Recursive ) = 0; diff --git a/kdevplatform/vcs/tests/test_vcsdiff.h b/kdevplatform/vcs/tests/test_vcsdiff.h --- a/kdevplatform/vcs/tests/test_vcsdiff.h +++ b/kdevplatform/vcs/tests/test_vcsdiff.h @@ -35,25 +35,13 @@ private: void setDiff(KDevelop::VcsDiff& diff, - KDevelop::VcsDiff::Type type, - KDevelop::VcsDiff::Content contentType, const QString& diffString, const QUrl& baseDiff, - uint depth, - const QHash& leftBinaries, - const QHash& rightBinaries, - const QHash& leftTexts, - const QHash& rightTexts); + uint depth); void compareDiff(const KDevelop::VcsDiff& diff, - KDevelop::VcsDiff::Type type, - KDevelop::VcsDiff::Content contentType, const QString& diffString, const QUrl& baseDiff, - uint depth, - const QHash& leftBinaries, - const QHash& rightBinaries, - const QHash& leftTexts, - const QHash& rightTexts); + uint depth); }; #endif // KDEVPLATFORM_TESTVCSDIFF_H diff --git a/kdevplatform/vcs/tests/test_vcsdiff.cpp b/kdevplatform/vcs/tests/test_vcsdiff.cpp --- a/kdevplatform/vcs/tests/test_vcsdiff.cpp +++ b/kdevplatform/vcs/tests/test_vcsdiff.cpp @@ -27,142 +27,102 @@ using namespace KDevelop; void TestVcsDiff::setDiff(VcsDiff& diff, - VcsDiff::Type type, - VcsDiff::Content contentType, const QString& diffString, const QUrl& baseDiff, - uint depth, - const QHash& leftBinaries, - const QHash& rightBinaries, - const QHash& leftTexts, - const QHash& rightTexts) + uint depth) { - diff.setType(type); - diff.setContentType(contentType); diff.setDiff(diffString); diff.setBaseDiff(baseDiff); diff.setDepth(depth); - for (auto it = leftBinaries.begin(); it != leftBinaries.end(); ++it) - diff.addLeftBinary(it.key(), it.value()); - for (auto it = rightBinaries.begin(); it != rightBinaries.end(); ++it) - diff.addRightBinary(it.key(), it.value()); - for (auto it = leftTexts.begin(); it != leftTexts.end(); ++it) - diff.addLeftText(it.key(), it.value()); - for (auto it = rightTexts.begin(); it != rightTexts.end(); ++it) - diff.addRightText(it.key(), it.value()); } void TestVcsDiff::compareDiff(const VcsDiff& diff, - VcsDiff::Type type, - VcsDiff::Content contentType, const QString& diffString, const QUrl& baseDiff, - uint depth, - const QHash& leftBinaries, - const QHash& rightBinaries, - const QHash& leftTexts, - const QHash& rightTexts) + uint depth) { - QCOMPARE(diff.type(), type); - QCOMPARE(diff.contentType(), contentType); QCOMPARE(diff.diff(), diffString); QCOMPARE(diff.baseDiff(), baseDiff); QCOMPARE(diff.depth(), depth); - QCOMPARE(diff.leftBinaries(), leftBinaries); - QCOMPARE(diff.rightBinaries(), rightBinaries); - QCOMPARE(diff.leftTexts(), leftTexts); - QCOMPARE(diff.rightTexts(), rightTexts); } void TestVcsDiff::testCopyConstructor() { // test plain copy - const VcsDiff::Type type = VcsDiff::DiffRaw; - const VcsDiff::Content contentType = VcsDiff::Binary; const QString diffString("diff"); const QUrl baseDiff("git://1"); const uint depth = 1; const VcsLocation location("server"); - const QHash leftBinaries({{location, "leftbinary"}}); - const QHash rightBinaries({{location, "rightbinary"}}); - const QHash leftTexts({{location, "lefttext"}}); - const QHash rightTexts({{location, "righttext"}}); { VcsDiff diffA; setDiff(diffA, - type, contentType, diffString, baseDiff, depth, leftBinaries, rightBinaries, leftTexts, rightTexts); + diffString, baseDiff, depth); VcsDiff diffB(diffA); compareDiff(diffA, - type, contentType, diffString, baseDiff, depth, leftBinaries, rightBinaries, leftTexts, rightTexts); + diffString, baseDiff, depth); compareDiff(diffB, - type, contentType, diffString, baseDiff, depth, leftBinaries, rightBinaries, leftTexts, rightTexts); + diffString, baseDiff, depth); } - const VcsDiff::Type typeNew = VcsDiff::DiffUnified; + const QString diffStringNew("diffNew"); // test detach after changing A { VcsDiff diffA; setDiff(diffA, - type, contentType, diffString, baseDiff, depth, leftBinaries, rightBinaries, leftTexts, rightTexts); + diffString, baseDiff, depth); VcsDiff diffB(diffA); // change a property of A - diffA.setType(typeNew); + diffA.setDiff(diffStringNew); compareDiff(diffA, - typeNew, contentType, diffString, baseDiff, depth, leftBinaries, rightBinaries, leftTexts, rightTexts); + diffStringNew, baseDiff, depth); compareDiff(diffB, - type, contentType, diffString, baseDiff, depth, leftBinaries, rightBinaries, leftTexts, rightTexts); + diffString, baseDiff, depth); } } void TestVcsDiff::testAssignOperator() { // test plain copy - const VcsDiff::Type type = VcsDiff::DiffRaw; - const VcsDiff::Content contentType = VcsDiff::Binary; const QString diffString("diff"); const QUrl baseDiff("git://1"); const uint depth = 1; const VcsLocation location("server"); - const QHash leftBinaries({{location, "leftbinary"}}); - const QHash rightBinaries({{location, "rightbinary"}}); - const QHash leftTexts({{location, "lefttext"}}); - const QHash rightTexts({{location, "righttext"}}); { VcsDiff diffA; setDiff(diffA, - type, contentType, diffString, baseDiff, depth, leftBinaries, rightBinaries, leftTexts, rightTexts); + diffString, baseDiff, depth); VcsDiff diffB; diffB = diffA; compareDiff(diffA, - type, contentType, diffString, baseDiff, depth, leftBinaries, rightBinaries, leftTexts, rightTexts); + diffString, baseDiff, depth); compareDiff(diffB, - type, contentType, diffString, baseDiff, depth, leftBinaries, rightBinaries, leftTexts, rightTexts); + diffString, baseDiff, depth); } - const VcsDiff::Type typeNew = VcsDiff::DiffUnified; + const QString diffStringNew("diffNew"); // test detach after changing A { VcsDiff diffA; setDiff(diffA, - type, contentType, diffString, baseDiff, depth, leftBinaries, rightBinaries, leftTexts, rightTexts); + diffString, baseDiff, depth); VcsDiff diffB; diffB = diffA; // change a property of A - diffA.setType(typeNew); + diffA.setDiff(diffStringNew); compareDiff(diffA, - typeNew, contentType, diffString, baseDiff, depth, leftBinaries, rightBinaries, leftTexts, rightTexts); + diffStringNew, baseDiff, depth); compareDiff(diffB, - type, contentType, diffString, baseDiff, depth, leftBinaries, rightBinaries, leftTexts, rightTexts); + diffString, baseDiff, depth); } } diff --git a/kdevplatform/vcs/vcsdiff.h b/kdevplatform/vcs/vcsdiff.h --- a/kdevplatform/vcs/vcsdiff.h +++ b/kdevplatform/vcs/vcsdiff.h @@ -22,79 +22,25 @@ #ifndef KDEVPLATFORM_VCSDIFF_H #define KDEVPLATFORM_VCSDIFF_H -//Needed first as it provides a hash-function for QHash -#include "vcslocation.h" - -#include #include +#include +#include #include "vcsexport.h" +class QUrl; class QString; -class QByteArray; namespace KDevelop { class KDEVPLATFORMVCS_EXPORT VcsDiff { public: - /** - * Specify the type of difference the diff() method should create. Note that a - * request for DiffUnified may not be honored, e.g. if the items being diffed are - * binary rather than text. - */ - enum Type - { - DiffRaw /**< Request complete copies of both items. */, - DiffUnified /**< Request copy of first item with diff. */, - DiffDontCare /**< Don't care; plugin will return whichever is easiest. */ - }; - - enum Content - { - Binary /**< Binary diff, using the full content of both files.*/, - Text /**< Textual diff.*/ - }; - VcsDiff(); virtual ~VcsDiff(); VcsDiff( const VcsDiff& ); - /** - * @returns the type of diff, i.e. raw or unified - */ - Type type() const; - - /** - * @returns the content type, i.e. binary or text - */ - Content contentType() const; - - /** - * @returns the binary content of the first file of the difference or - * an empty QByteArray if this is a textual diff - */ - QHash leftBinaries() const; - - /** - * @returns the binary content of the second file of the difference or - * an empty QByteArray if this is a textual diff - */ - QHash rightBinaries() const; - - /** - * @returns the textual content of the first file of the difference or - * an empty QString if this is a binary diff - */ - QHash leftTexts() const; - - /** - * @returns the textual content of the second file of the difference or - * an empty QString if this is a unified or binary diff - */ - QHash rightTexts() const; - /** * @returns the difference between the first and the second file in * unified diff format or an empty QString if this is a binary diff @@ -117,18 +63,7 @@ void setDepth(const uint depth); void setDiff( const QString& ); - void addLeftBinary( const KDevelop::VcsLocation&, const QByteArray& ); - void removeLeftBinary( const KDevelop::VcsLocation& ); - void addRightBinary( const KDevelop::VcsLocation&, const QByteArray& ); - void removeRightBinary( const KDevelop::VcsLocation& ); - - void addLeftText( const KDevelop::VcsLocation&, const QString& ); - void removeLeftText( const KDevelop::VcsLocation& ); - void addRightText( const KDevelop::VcsLocation&, const QString& ); - void removeRightText( const KDevelop::VcsLocation& ); - void setType( Type ); - void setContentType( Content ); VcsDiff& operator=( const VcsDiff& rhs); /** @returns whether there are not changes on the diff */ diff --git a/kdevplatform/vcs/vcsdiff.cpp b/kdevplatform/vcs/vcsdiff.cpp --- a/kdevplatform/vcs/vcsdiff.cpp +++ b/kdevplatform/vcs/vcsdiff.cpp @@ -21,23 +21,17 @@ #include "vcsdiff.h" #include -#include +#include #include namespace KDevelop { class VcsDiffPrivate : public QSharedData { public: - QHash leftBinaries; - QHash rightBinaries; - QHash leftTexts; - QHash rightTexts; QUrl baseDiff; QString diff; - VcsDiff::Type type = VcsDiff::DiffDontCare; - VcsDiff::Content content = VcsDiff::Text; uint depth = 0; }; @@ -55,39 +49,7 @@ bool VcsDiff::isEmpty() const { - return d->diff.isEmpty() && d->leftBinaries.isEmpty() && d->rightBinaries.isEmpty() - && d->leftTexts.isEmpty() && d->rightTexts.isEmpty(); -} - -VcsDiff::Type VcsDiff::type() const -{ - return d->type; -} - -VcsDiff::Content VcsDiff::contentType() const -{ - return d->content; -} - -QHash VcsDiff::leftBinaries() const -{ - return d->leftBinaries; -} - -QHash VcsDiff::rightBinaries() const -{ - return d->rightBinaries; -} - - -QHash VcsDiff::leftTexts() const -{ - return d->leftTexts; -} - -QHash VcsDiff::rightTexts() const -{ - return d->rightTexts; + return d->diff.isEmpty(); } QString VcsDiff::diff() const @@ -101,56 +63,6 @@ d->diff = s; } -void VcsDiff::addLeftBinary( const VcsLocation& loc, const QByteArray& b ) -{ - d->leftBinaries[loc] = b; -} - -void VcsDiff::addRightBinary( const VcsLocation& loc, const QByteArray& b ) -{ - d->rightBinaries[loc] = b; -} - -void VcsDiff::removeLeftBinary( const VcsLocation& loc ) -{ - d->leftBinaries.remove( loc ); -} - -void VcsDiff::removeRightBinary( const VcsLocation& loc ) -{ - d->rightBinaries.remove( loc ); -} - -void VcsDiff::addLeftText( const VcsLocation& loc, const QString& b ) -{ - d->leftTexts[loc] = b; -} - -void VcsDiff::addRightText( const VcsLocation& loc, const QString& b ) -{ - d->rightTexts[loc] = b; -} - -void VcsDiff::removeLeftText( const VcsLocation& loc ) -{ - d->leftTexts.remove( loc ); -} - -void VcsDiff::removeRightText( const VcsLocation& loc ) -{ - d->rightTexts.remove( loc ); -} - -void VcsDiff::setType( VcsDiff::Type t ) -{ - d->type = t; -} - -void VcsDiff::setContentType( VcsDiff::Content c ) -{ - d->content = c; -} - VcsDiff& VcsDiff::operator=( const VcsDiff& rhs) { d = rhs.d; diff --git a/kdevplatform/vcs/vcspluginhelper.cpp b/kdevplatform/vcs/vcspluginhelper.cpp --- a/kdevplatform/vcs/vcspluginhelper.cpp +++ b/kdevplatform/vcs/vcspluginhelper.cpp @@ -49,6 +49,7 @@ #include #include #include +#include #include #include "interfaces/idistributedversioncontrol.h" diff --git a/kdevplatform/vcs/widgets/vcsdiffwidget.cpp b/kdevplatform/vcs/widgets/vcsdiffwidget.cpp --- a/kdevplatform/vcs/widgets/vcsdiffwidget.cpp +++ b/kdevplatform/vcs/widgets/vcsdiffwidget.cpp @@ -63,10 +63,7 @@ delete patch; } - qCDebug(VCS) << "diff:" << diff.leftTexts().count(); qCDebug(VCS) << "diff:" << diff.diff(); - qCDebug(VCS) << "diff:" << diff.type(); - qCDebug(VCS) << "diff:" << diff.contentType(); m_ui->diffDisplay->setPlainText( diff.diff() ); m_ui->diffDisplay->setReadOnly( true ); diff --git a/plugins/appwizard/projectvcspage.cpp b/plugins/appwizard/projectvcspage.cpp --- a/plugins/appwizard/projectvcspage.cpp +++ b/plugins/appwizard/projectvcspage.cpp @@ -29,6 +29,7 @@ #include #include +#include #include #include diff --git a/plugins/bazaar/bazaarplugin.h b/plugins/bazaar/bazaarplugin.h --- a/plugins/bazaar/bazaarplugin.h +++ b/plugins/bazaar/bazaarplugin.h @@ -50,7 +50,7 @@ KDevelop::VcsJob* copy(const QUrl& localLocationSrc, const QUrl& localLocationDstn) override; KDevelop::VcsImportMetadataWidget* createImportMetadataWidget(QWidget* parent) override; KDevelop::VcsJob* createWorkingCopy(const KDevelop::VcsLocation& sourceRepository, const QUrl& destinationDirectory, RecursionMode recursion=Recursive) override; - KDevelop::VcsJob* diff(const QUrl& fileOrDirectory, const KDevelop::VcsRevision& srcRevision, const KDevelop::VcsRevision& dstRevision, KDevelop::VcsDiff::Type, RecursionMode recursion=Recursive) override; + KDevelop::VcsJob* diff(const QUrl& fileOrDirectory, const KDevelop::VcsRevision& srcRevision, const KDevelop::VcsRevision& dstRevision, RecursionMode recursion=Recursive) override; KDevelop::VcsJob* init(const QUrl& localRepositoryRoot) override; bool isVersionControlled(const QUrl& localLocation) override; KDevelop::VcsJob* log(const QUrl& localLocation, const KDevelop::VcsRevision& rev, long unsigned int limit) override; diff --git a/plugins/bazaar/bazaarplugin.cpp b/plugins/bazaar/bazaarplugin.cpp --- a/plugins/bazaar/bazaarplugin.cpp +++ b/plugins/bazaar/bazaarplugin.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -120,7 +121,7 @@ return job; } -VcsJob* BazaarPlugin::diff(const QUrl& fileOrDirectory, const VcsRevision& srcRevision, const VcsRevision& dstRevision, VcsDiff::Type, IBasicVersionControl::RecursionMode recursion) +VcsJob* BazaarPlugin::diff(const QUrl& fileOrDirectory, const VcsRevision& srcRevision, const VcsRevision& dstRevision, IBasicVersionControl::RecursionMode recursion) { Q_UNUSED(recursion); VcsJob* job = new DiffJob(BazaarUtils::workingCopy(fileOrDirectory), BazaarUtils::getRevisionSpecRange(srcRevision, dstRevision), fileOrDirectory, this); diff --git a/plugins/cvs/cvsdiffjob.cpp b/plugins/cvs/cvsdiffjob.cpp --- a/plugins/cvs/cvsdiffjob.cpp +++ b/plugins/cvs/cvsdiffjob.cpp @@ -11,6 +11,7 @@ #include "cvsdiffjob.h" #include +#include CvsDiffJob::CvsDiffJob(KDevelop::IPlugin* parent, KDevelop::OutputJob::OutputJobVerbosity verbosity) : CvsJob(parent, verbosity) @@ -29,11 +30,6 @@ diff.setDiff( output() ); /// @todo check output of "cvs diff" if it reported binary files - diff.setContentType( KDevelop::VcsDiff::Text ); - - /// @todo hmmm, we always call "cvs diff" with it's -u option - /// but if this option would be omitted cvs would return an other format - diff.setType( KDevelop::VcsDiff::DiffUnified ); return qVariantFromValue( diff ); } diff --git a/plugins/cvs/cvsplugin.h b/plugins/cvs/cvsplugin.h --- a/plugins/cvs/cvsplugin.h +++ b/plugins/cvs/cvsplugin.h @@ -71,7 +71,6 @@ KDevelop::VcsJob* diff(const QUrl& fileOrDirectory, const KDevelop::VcsRevision& srcRevision, const KDevelop::VcsRevision& dstRevision, - KDevelop::VcsDiff::Type, KDevelop::IBasicVersionControl::RecursionMode = KDevelop::IBasicVersionControl::Recursive) override; KDevelop::VcsJob* log(const QUrl& localLocation, const KDevelop::VcsRevision& rev, diff --git a/plugins/cvs/cvsplugin.cpp b/plugins/cvs/cvsplugin.cpp --- a/plugins/cvs/cvsplugin.cpp +++ b/plugins/cvs/cvsplugin.cpp @@ -392,7 +392,7 @@ return job; } -KDevelop::VcsJob * CvsPlugin::diff(const QUrl & fileOrDirectory, const KDevelop::VcsRevision & srcRevision, const KDevelop::VcsRevision & dstRevision, KDevelop::VcsDiff::Type, KDevelop::IBasicVersionControl::RecursionMode) +KDevelop::VcsJob * CvsPlugin::diff(const QUrl & fileOrDirectory, const KDevelop::VcsRevision & srcRevision, const KDevelop::VcsRevision & dstRevision, KDevelop::IBasicVersionControl::RecursionMode) { CvsJob* job = d->m_proxy->diff(fileOrDirectory, srcRevision, dstRevision, QStringLiteral("-uN")/*always unified*/); return job; diff --git a/plugins/ghprovider/ghproviderwidget.cpp b/plugins/ghprovider/ghproviderwidget.cpp --- a/plugins/ghprovider/ghproviderwidget.cpp +++ b/plugins/ghprovider/ghproviderwidget.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include #include diff --git a/plugins/git/gitplugin.h b/plugins/git/gitplugin.h --- a/plugins/git/gitplugin.h +++ b/plugins/git/gitplugin.h @@ -104,7 +104,7 @@ KDevelop::IBasicVersionControl::RecursionMode recursion = KDevelop::IBasicVersionControl::Recursive) override; KDevelop::VcsJob* diff(const QUrl& fileOrDirectory, const KDevelop::VcsRevision& srcRevision, const KDevelop::VcsRevision& dstRevision, - KDevelop::VcsDiff::Type, RecursionMode recursion) override; + RecursionMode recursion) override; KDevelop::VcsJob* log( const QUrl& localLocation, const KDevelop::VcsRevision& rev, unsigned long limit) override; KDevelop::VcsJob* log(const QUrl& localLocation, const KDevelop::VcsRevision& rev, const KDevelop::VcsRevision& limit) override; diff --git a/plugins/git/gitplugin.cpp b/plugins/git/gitplugin.cpp --- a/plugins/git/gitplugin.cpp +++ b/plugins/git/gitplugin.cpp @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include @@ -385,10 +386,8 @@ } VcsJob* GitPlugin::diff(const QUrl& fileOrDirectory, const KDevelop::VcsRevision& srcRevision, const KDevelop::VcsRevision& dstRevision, - VcsDiff::Type /*type*/, IBasicVersionControl::RecursionMode recursion) + IBasicVersionControl::RecursionMode recursion) { - //TODO: control different types - DVcsJob* job = new GitJob(dotGitDirectory(fileOrDirectory), this, KDevelop::OutputJob::Silent); job->setType(VcsJob::Diff); *job << "git" << "diff" << "--no-color" << "--no-ext-diff"; diff --git a/plugins/git/tests/test_git.cpp b/plugins/git/tests/test_git.cpp --- a/plugins/git/tests/test_git.cpp +++ b/plugins/git/tests/test_git.cpp @@ -574,7 +574,7 @@ VcsRevision srcrev = VcsRevision::createSpecialRevision(VcsRevision::Base); VcsRevision dstrev = VcsRevision::createSpecialRevision(VcsRevision::Working); - VcsJob* j = m_plugin->diff(QUrl::fromLocalFile(gitTest_BaseDir()), srcrev, dstrev, VcsDiff::DiffUnified, IBasicVersionControl::Recursive); + VcsJob* j = m_plugin->diff(QUrl::fromLocalFile(gitTest_BaseDir()), srcrev, dstrev, IBasicVersionControl::Recursive); VERIFYJOB(j); KDevelop::VcsDiff d = j->fetchResults().value(); diff --git a/plugins/kdeprovider/kdeproviderwidget.cpp b/plugins/kdeprovider/kdeproviderwidget.cpp --- a/plugins/kdeprovider/kdeproviderwidget.cpp +++ b/plugins/kdeprovider/kdeproviderwidget.cpp @@ -26,6 +26,8 @@ #include #include #include +#include + #include "ui_kdeconfig.h" #include "kdeconfig.h" #include "kdeprojectsmodel.h" diff --git a/plugins/perforce/perforceplugin.h b/plugins/perforce/perforceplugin.h --- a/plugins/perforce/perforceplugin.h +++ b/plugins/perforce/perforceplugin.h @@ -84,7 +84,6 @@ KDevelop::VcsJob* diff(const QUrl& fileOrDirectory, const KDevelop::VcsRevision& srcRevision, const KDevelop::VcsRevision& dstRevision, - KDevelop::VcsDiff::Type = KDevelop::VcsDiff::DiffUnified, KDevelop::IBasicVersionControl::RecursionMode recursion = KDevelop::IBasicVersionControl::Recursive) override; KDevelop::VcsJob* log(const QUrl& localLocation, diff --git a/plugins/perforce/perforceplugin.cpp b/plugins/perforce/perforceplugin.cpp --- a/plugins/perforce/perforceplugin.cpp +++ b/plugins/perforce/perforceplugin.cpp @@ -304,7 +304,7 @@ return job; } -KDevelop::VcsJob* PerforcePlugin::diff(const QUrl& fileOrDirectory, const KDevelop::VcsRevision& srcRevision, const KDevelop::VcsRevision& dstRevision, KDevelop::VcsDiff::Type , KDevelop::IBasicVersionControl::RecursionMode /*recursion*/) +KDevelop::VcsJob* PerforcePlugin::diff(const QUrl& fileOrDirectory, const KDevelop::VcsRevision& srcRevision, const KDevelop::VcsRevision& dstRevision, KDevelop::IBasicVersionControl::RecursionMode /*recursion*/) { QFileInfo curFile(fileOrDirectory.toLocalFile()); QString depotSrcFileName = getRepositoryName(curFile); diff --git a/plugins/perforce/tests/test_perforce.cpp b/plugins/perforce/tests/test_perforce.cpp --- a/plugins/perforce/tests/test_perforce.cpp +++ b/plugins/perforce/tests/test_perforce.cpp @@ -180,7 +180,7 @@ VcsRevision dstRevision; dstRevision.setRevisionValue(QVariant(2), VcsRevision::GlobalNumber); - VcsJob* j = m_plugin->diff( QUrl::fromLocalFile(perforceTestBaseDir + perforceTest_FileName), srcRevision, dstRevision, VcsDiff::Type::DiffUnified ); + VcsJob* j = m_plugin->diff( QUrl::fromLocalFile(perforceTestBaseDir + perforceTest_FileName), srcRevision, dstRevision); VERIFYJOB(j); } diff --git a/plugins/subversion/kdevsvnplugin.h b/plugins/subversion/kdevsvnplugin.h --- a/plugins/subversion/kdevsvnplugin.h +++ b/plugins/subversion/kdevsvnplugin.h @@ -81,7 +81,6 @@ KDevelop::VcsJob* diff(const QUrl &fileOrDirectory, const KDevelop::VcsRevision& srcRevision, const KDevelop::VcsRevision& dstRevision, - KDevelop::VcsDiff::Type = KDevelop::VcsDiff::DiffUnified, KDevelop::IBasicVersionControl::RecursionMode recursion = KDevelop::IBasicVersionControl::Recursive) override; @@ -94,7 +93,6 @@ const KDevelop::VcsLocation& localOrRepoLocationDst, const KDevelop::VcsRevision& srcRevision, const KDevelop::VcsRevision& dstRevision, - KDevelop::VcsDiff::Type = KDevelop::VcsDiff::DiffDontCare, KDevelop::IBasicVersionControl::RecursionMode = KDevelop::IBasicVersionControl::Recursive); KDevelop::VcsJob* log(const QUrl &localLocation, diff --git a/plugins/subversion/kdevsvnplugin.cpp b/plugins/subversion/kdevsvnplugin.cpp --- a/plugins/subversion/kdevsvnplugin.cpp +++ b/plugins/subversion/kdevsvnplugin.cpp @@ -224,26 +224,23 @@ KDevelop::VcsJob* KDevSvnPlugin::diff(const QUrl &fileOrDirectory, const KDevelop::VcsRevision& srcRevision, const KDevelop::VcsRevision& dstRevision, - KDevelop::VcsDiff::Type diffType, KDevelop::IBasicVersionControl::RecursionMode recurse) { KDevelop::VcsLocation loc(fileOrDirectory); - return diff2(loc, loc, srcRevision, dstRevision, diffType, recurse); + return diff2(loc, loc, srcRevision, dstRevision, recurse); } KDevelop::VcsJob* KDevSvnPlugin::diff2(const KDevelop::VcsLocation& src, const KDevelop::VcsLocation& dst, const KDevelop::VcsRevision& srcRevision, const KDevelop::VcsRevision& dstRevision, - KDevelop::VcsDiff::Type diffType, KDevelop::IBasicVersionControl::RecursionMode recurse) { SvnDiffJob* job = new SvnDiffJob(this); job->setSource(src); job->setDestination(dst); job->setSrcRevision(srcRevision); job->setDstRevision(dstRevision); - job->setDiffType(diffType); job->setRecursive((recurse == KDevelop::IBasicVersionControl::Recursive)); return job; } diff --git a/plugins/subversion/svndiffjob.h b/plugins/subversion/svndiffjob.h --- a/plugins/subversion/svndiffjob.h +++ b/plugins/subversion/svndiffjob.h @@ -24,15 +24,12 @@ #include "svnjobbase.h" -#include - #include -class SvnCatJob; - namespace KDevelop { class VcsRevision; + class VcsLocation; } class SvnInternalDiffJob; @@ -54,16 +51,11 @@ void setIgnoreContentType( bool ); void setNoDiffOnDelete( bool ); - void setDiffType( KDevelop::VcsDiff::Type type ); - public Q_SLOTS: void setDiff( const QString& ); - void addLeftText( KDevelop::VcsJob* job ); - void removeJob( KJob* job ); + private: KDevelop::VcsDiff m_diff; - KDevelop::VcsDiff::Type m_diffType; - QMap m_catJobMap; }; diff --git a/plugins/subversion/svndiffjob.cpp b/plugins/subversion/svndiffjob.cpp --- a/plugins/subversion/svndiffjob.cpp +++ b/plugins/subversion/svndiffjob.cpp @@ -37,7 +37,6 @@ #include "iruncontroller.h" #include "svnclient.h" -#include "svncatjob.h" ///@todo The subversion library returns borked diffs, where the headers are at the end. This function /// takes those headers, and moves them into the correct place to create a valid working diff. @@ -338,103 +337,8 @@ { m_diff = KDevelop::VcsDiff(); m_diff.setBaseDiff(QUrl::fromLocalFile(QStringLiteral("/"))); - m_diff.setType( KDevelop::VcsDiff::DiffUnified ); - - m_diff.setContentType( KDevelop::VcsDiff::Text ); m_diff.setDiff( diff ); - QRegExp fileRe("(?:^|\n)Index: ([^\n]+)\n"); - - QStringList paths; - int pos = 0; - - while( ( pos = fileRe.indexIn( diff, pos ) ) != -1 ) - { - paths << fileRe.cap(1); - pos += fileRe.matchedLength(); - } - - if (paths.isEmpty()) { - internalJobDone(); - emit resultsReady( this ); - return; - } - - foreach( const QString &s, paths ) - { - if( !s.isEmpty() ) - { - SvnCatJob* job = new SvnCatJob( m_part ); - KDevelop::VcsLocation l = m_job->source(); - if( l.type() == KDevelop::VcsLocation::LocalLocation ) - { - l.setLocalUrl( QUrl::fromLocalFile( s ) ); - }else - { - QString repoLocation = QUrl( l.repositoryServer() ).toString( QUrl::PreferLocalFile | QUrl::StripTrailingSlash ); - QFileInfo fi( repoLocation ); - if( s == fi.fileName() ) - { - l.setRepositoryServer( l.repositoryServer() ); - }else - { - l.setRepositoryServer( l.repositoryServer() + '/' + s ); - } - } - - job->setSource( l ); - job->setPegRevision( m_job->pegRevision() ); - job->setSrcRevision( m_job->srcRevision() ); - - m_catJobMap[job] = l; - - connect( job, &KDevelop::VcsJob::resultsReady, this, &SvnDiffJob::addLeftText ); - connect( job, &KJob::result, this, &SvnDiffJob::removeJob ); - - KDevelop::ICore::self()->runController()->registerJob(job); - } - } -} - -void SvnDiffJob::addLeftText( KDevelop::VcsJob* job ) -{ - if( m_catJobMap.contains( job ) ) - { - QVariant v = job->fetchResults(); - m_diff.addLeftText( m_catJobMap[job], v.toString() ); - m_catJobMap.remove(job); - // KJobs delete themselves when finished - } - if( m_catJobMap.isEmpty() ) - { - internalJobDone(); - emit resultsReady( this ); - } -} - -void SvnDiffJob::removeJob( KJob* job ) -{ - if( job->error() != 0 ) - { - KDevelop::VcsJob* j = dynamic_cast( job ); - if( j ) - { - if( m_catJobMap.contains( j ) ) - { - m_catJobMap.remove(j); - // KJobs delete themselves when finished - } - } - } - - if( m_catJobMap.isEmpty() ) - { - internalJobDone(); - emit resultsReady( this ); - } -} - -void SvnDiffJob::setDiffType( KDevelop::VcsDiff::Type type ) -{ - m_diffType = type; + internalJobDone(); + emit resultsReady( this ); } diff --git a/plugins/subversion/tests/test_svnimport.cpp b/plugins/subversion/tests/test_svnimport.cpp --- a/plugins/subversion/tests/test_svnimport.cpp +++ b/plugins/subversion/tests/test_svnimport.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #define VERBOSE #if defined(VERBOSE) diff --git a/plugins/subversion/tests/test_svnrecursiveadd.cpp b/plugins/subversion/tests/test_svnrecursiveadd.cpp --- a/plugins/subversion/tests/test_svnrecursiveadd.cpp +++ b/plugins/subversion/tests/test_svnrecursiveadd.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #define PATHETIC // A little motivator to make things work right :) #if defined(PATHETIC)