# # # patch "src/monotone/MonotoneUtil.cpp" # from [1255e6c954679374f3e88d4bafc1dc72368392f6] # to [dc08e6301807e7651b29565af6d5e903347f1f1a] # # patch "src/monotone/MonotoneUtil.h" # from [3bd3538101a0a176185cc1193a847e1dc7fec430] # to [b611e171fa57b0ed3f28ea39ea0f7c594c02bd59] # ============================================================ --- src/monotone/MonotoneUtil.cpp 1255e6c954679374f3e88d4bafc1dc72368392f6 +++ src/monotone/MonotoneUtil.cpp dc08e6301807e7651b29565af6d5e903347f1f1a @@ -109,7 +109,6 @@ QString MonotoneUtil::getBaseWorkspaceRe return QString(); } - data.chop(1); // we cannot handle workspaces with multiple parents yet @@ -587,6 +586,41 @@ QMap MonotoneUtil::get return entries; } +QString MonotoneUtil::getCorrespondingPath(const DatabaseFile & db, + const QString & rev1, + const QString & filePath, + const QString & rev2) +{ + QStringList args; + args << "get_corresponding_path" << rev1 << filePath << rev2; + MonotoneTaskPtr task(new MonotoneTask(args)); + runSynchronousDatabaseTask(db, task); + if (!task->isFinished()) + { + C(QString("task '%1' aborted").arg(QString(task->getEncodedInput()))); + return QString(); + } + + QMap entries; + + if (task->getReturnCode() > 0) + { + C(QString("Couldn't run get_corresponding_path: %1") + .arg(task->getLast(MonotoneTask::Error))); + return QString(); + } + + QString out(task->getDecodedOutput()); + if (out.isEmpty()) + return QString(); + + BasicIOParser parser(out); + I(parser.parse()); + StanzaList stanzas = parser.getStanzas(); + I(stanzas.size() == 1 && stanzas.at(0).size() == 1); + return stanzas.at(0).at(0).vals.at(0); +} + /*! Strips mtn: warning: and alike from error strings coming from mtn and unwraps them, if this fails we add the original string unwrapped ============================================================ --- src/monotone/MonotoneUtil.h 3bd3538101a0a176185cc1193a847e1dc7fec430 +++ src/monotone/MonotoneUtil.h b611e171fa57b0ed3f28ea39ea0f7c594c02bd59 @@ -40,6 +40,7 @@ public: static FileEntryList getRevisionManifest(const DatabaseFile &, const QString &); static QMap getPrivateKeyList(const DatabaseFile &); static QStringList getPreviousContentMarks(const DatabaseFile &, const QString &, const QString &); + static QString getCorrespondingPath(const DatabaseFile &, const QString &, const QString &, const QString &); static QString getFileId(const DatabaseFile &, const QString &); static QStringList getRoots(const DatabaseFile &, bool &); static QStringList topsortRevisions(const DatabaseFile &, const QStringList &);