From 537bb357f89cf534acb7a656abd6b32130bb5349 Mon Sep 17 00:00:00 2001 From: Colin Guthrie Date: Mon, 16 Jun 2014 21:55:45 +0100 Subject: main: Load repository logs from the directories found --- src/main.cpp | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) (limited to 'src/main.cpp') diff --git a/src/main.cpp b/src/main.cpp index e917549..296584c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -17,6 +17,7 @@ #include #include +#include #include #include #include @@ -231,6 +232,60 @@ int main(int argc, char **argv) min_rev = repo_next; } + + if (!rulesList.allRepositories().count()) { + + qDebug() << "No repositories defined, assuming dynamic repository creation and looking for repo folders"; + + retry2: + min_rev = 1; + + QDir dir; + dir.setFilter(QDir::Dirs | QDir::NoSymLinks | QDir::NoDot | QDir::NoDotDot); + + QStringList list = dir.entryList(); + for (int i = 0; i < list.size(); ++i) { + QString reponame = list.at(i); + if (!QFile::exists(reponame + "/marks-" + reponame)) + continue; + + //qDebug() << "Found repo" << reponame; + + // The 0 revision will be configured appropriatly via setupIncremental()... + Repository *repo = new Repository(reponame, "master", 0); + if (!repo) + return EXIT_FAILURE; + repositories.insert(reponame, repo); + + int repo_next = repo->setupIncremental(cutoff); + + /* + * cutoff < resume_from => error exit eventually + * repo_next == cutoff => probably truncated log + */ + if (cutoff < resume_from && repo_next == cutoff) + /* + * Restore the log file so we fail the next time + * svn2git is invoked with the same arguments + */ + repo->restoreLog(); + + if (cutoff < min_rev) + /* + * We've rewound before the last revision of some + * repository that we've already seen. Start over + * from the beginning. (since cutoff is decreasing, + * we're sure we'll make forward progress eventually) + */ + goto retry2; + + if (min_rev < repo_next) + min_rev = repo_next; + } + } + + qDebug() << "Loaded" << repositories.count() << "repositories; resuming from revision" << min_rev; + if (cutoff < resume_from) { qCritical() << "Cannot resume from" << resume_from << "as there are errors in revision" << cutoff; -- cgit v1.2.1