aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorColin Guthrie <colin@mageia.org>2014-06-16 21:55:45 +0100
committerColin Guthrie <colin@mageia.org>2014-06-16 21:55:45 +0100
commit537bb357f89cf534acb7a656abd6b32130bb5349 (patch)
treebfdf231aa1047ac15200c4820180db95d784c6b0 /src
parenta8f714b1d6a99b454ae674ac6f0e72d329456f7b (diff)
downloadsvn2git-537bb357f89cf534acb7a656abd6b32130bb5349.tar
svn2git-537bb357f89cf534acb7a656abd6b32130bb5349.tar.gz
svn2git-537bb357f89cf534acb7a656abd6b32130bb5349.tar.bz2
svn2git-537bb357f89cf534acb7a656abd6b32130bb5349.tar.xz
svn2git-537bb357f89cf534acb7a656abd6b32130bb5349.zip
main: Load repository logs from the directories found
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;