aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.cpp55
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;