# # # patch "src/monotone/MonotoneUtil.cpp" # from [4850880097fd8151164552ee430f3657bb4fd25b] # to [b76e6c387a72f818d04d141c0de633da210026d5] # # patch "src/monotone/MonotoneUtil.h" # from [fa1c8e5f0028910b9dbd9d34ae1141ac8220ccf8] # to [b893f5d1e91cdfc142c44b69ddb86d9dfab8b51f] # ============================================================ --- src/monotone/MonotoneUtil.cpp 4850880097fd8151164552ee430f3657bb4fd25b +++ src/monotone/MonotoneUtil.cpp b76e6c387a72f818d04d141c0de633da210026d5 @@ -419,6 +419,30 @@ QStringList MonotoneUtil::getRoots(const return data.split('\n', QString::SkipEmptyParts); } +QStringList MonotoneUtil::getCommonAncestors(const DatabaseFile & db, const QStringList & revs) +{ + QStringList args; + args << "common_ancestors"; + args += revs; + + MonotoneTaskPtr task(new MonotoneTask(args)); + 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 common ancestors: %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 fa1c8e5f0028910b9dbd9d34ae1141ac8220ccf8 +++ src/monotone/MonotoneUtil.h b893f5d1e91cdfc142c44b69ddb86d9dfab8b51f @@ -43,6 +43,7 @@ public: static QString getFileId(const DatabaseFile &, const QString &); static QStringList getRoots(const DatabaseFile &); static QStringList topsortRevisions(const DatabaseFile &, const QStringList &); + static QStringList getCommonAncestors(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 &); static QMap getDatabaseVariables(const DatabaseFile &, const QString &);