X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/fa4680cb38028aceb68d41e1937d27c71d1f121b..93ce7f40e2d067eba48b317ef4028c2c75eebebd:/src/revisioncontrolplugin.cpp diff --git a/src/revisioncontrolplugin.cpp b/src/revisioncontrolplugin.cpp index 6c0f82fb8..dde8d8665 100644 --- a/src/revisioncontrolplugin.cpp +++ b/src/revisioncontrolplugin.cpp @@ -19,7 +19,10 @@ #include "revisioncontrolplugin.h" +#include #include +#include +#include RevisionControlPlugin::RevisionControlPlugin() { @@ -33,7 +36,7 @@ RevisionControlPlugin::~RevisionControlPlugin() SubversionPlugin::SubversionPlugin() : m_directory(), - m_fileInfoHash() + m_revisionInfoHash() { } @@ -49,31 +52,38 @@ QString SubversionPlugin::fileName() const bool SubversionPlugin::beginRetrieval(const QString& directory) { Q_ASSERT(directory.endsWith('/')); - const QString path = directory + ".svn/text-base/"; + m_directory = directory; - QDir dir(path); - const QFileInfoList fileInfoList = dir.entryInfoList(); - const int size = fileInfoList.size(); + QFile file(directory + ".svn/entries"); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { + return false; + } + + QTextStream in(&file); QString fileName; - for (int i = 0; i < size; ++i) { - fileName = fileInfoList.at(i).fileName(); - // Remove the ".svn-base" postfix to be able to compare the filenames - // in a fast way in SubversionPlugin::revisionState(). - fileName.chop(sizeof(".svn-base") / sizeof(char) - 1); - if (!fileName.isEmpty()) { - m_fileInfoHash.insert(fileName, fileInfoList.at(i)); + QString line; + while (!in.atEnd()) { + fileName = line; + line = in.readLine(); + const bool isRevisioned = !line.isEmpty() && + ((line == QLatin1String("dir")) || + (line == QLatin1String("file"))); + if (isRevisioned) { + RevisionInfo info; // TODO + m_revisionInfoHash.insert(fileName, info); } } - return size > 0; + return true; } void SubversionPlugin::endRetrieval() { } -RevisionControlPlugin::RevisionState SubversionPlugin::revisionState(const QString& fileName) +RevisionControlPlugin::RevisionState SubversionPlugin::revisionState(const KFileItem& item) { - if (m_fileInfoHash.contains(fileName)) { + const QString name = item.name(); + if (m_revisionInfoHash.contains(name)) { // TODO... return RevisionControlPlugin::LatestRevision; }