# # # patch "src/monotone/MonotoneUtil.cpp" # from [61c5dbbd2cac122916b4905ef577b68740a283a0] # to [4850880097fd8151164552ee430f3657bb4fd25b] # # patch "src/monotone/MonotoneUtil.h" # from [ec6bcdda19209c8633eef251ef19972db8027cb8] # to [fa1c8e5f0028910b9dbd9d34ae1141ac8220ccf8] # ============================================================ --- src/monotone/MonotoneUtil.cpp 61c5dbbd2cac122916b4905ef577b68740a283a0 +++ src/monotone/MonotoneUtil.cpp 4850880097fd8151164552ee430f3657bb4fd25b @@ -399,6 +399,26 @@ QString MonotoneUtil::getFileId(const Da return data; } +QStringList MonotoneUtil::getRoots(const DatabaseFile & db) +{ + MonotoneTaskPtr task(new MonotoneTask(QStringList() << "roots")); + runSynchronousDatabaseTask(db, task); + if (!task->isFinished()) + { + C(QString("task '%1' aborted").arg(QString(task->getEncodedInput()))); + return QStringList(); + } + + QString data = task->getDecodedOutput(); + if (task->getReturnCode() > 0) + { + C(QString("Couldn't query roots: %1").arg(data)); + return QStringList(); + } + + return data.split('\n', QString::SkipEmptyParts); +} + QStringList MonotoneUtil::getPreviousContentMarks(const DatabaseFile & db, const QString & file, const QString & startRev) { QStringList args; ============================================================ --- src/monotone/MonotoneUtil.h ec6bcdda19209c8633eef251ef19972db8027cb8 +++ src/monotone/MonotoneUtil.h fa1c8e5f0028910b9dbd9d34ae1141ac8220ccf8 @@ -41,6 +41,7 @@ public: static QMap getPrivateKeyList(const DatabaseFile &); static QStringList getPreviousContentMarks(const DatabaseFile &, const QString &, const QString &); static QString getFileId(const DatabaseFile &, const QString &); + static QStringList getRoots(const DatabaseFile &); static QStringList topsortRevisions(const DatabaseFile &, const QStringList &); static bool getAttribute(const WorkspacePath &, const QString &, const QString &, QPair &); static bool getAttribute(const DatabaseFile &, const QString &, const QString &, const QString &, QString &);