diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main.cpp | 55 |
1 files changed, 55 insertions, 0 deletions
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 <QCoreApplication> #include <QFile> +#include <QDir> #include <QStringList> #include <QTextStream> #include <QDebug> @@ -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; |