]> andersk Git - svn-all-fast-export.git/blobdiff - src/main.cpp
Don't let me waste 2 hours doing an import if the identity map file wasn't found...
[svn-all-fast-export.git] / src / main.cpp
index 2ce11c592e0c86c18d3de69f6578319328eab4f1..35535c9ec666ebfbf9b9048a7e7dd12faba4e690 100644 (file)
@@ -16,6 +16,7 @@
  */
 
 #include <QCoreApplication>
+#include <QFile>
 #include <QStringList>
 
 #include <stdio.h>
 #include "repository.h"
 #include "svn.h"
 
+QHash<QByteArray, QByteArray> loadIdentityMapFile(const QString &fileName)
+{
+    QHash<QByteArray, QByteArray> result;
+    if (fileName.isEmpty())
+        return result;
+
+    QFile file(fileName);
+    if (!file.open(QIODevice::ReadOnly)) {
+        fprintf(stderr, "Could not open file %s: %s",
+                qPrintable(fileName), qPrintable(file.errorString()));
+        return result;
+    }
+
+    while (!file.atEnd()) {
+        QByteArray line = file.readLine().trimmed();
+        int space = line.indexOf(' ');
+        if (space == -1)
+            continue;           // invalid line
+
+        QByteArray realname = line.mid(space).trimmed();
+        line.truncate(space);
+        result.insert(line, realname);
+    };
+
+    return result;
+}
+
 int main(int argc, char **argv)
 {
     QCoreApplication app(argc, argv);
@@ -37,6 +65,7 @@ int main(int argc, char **argv)
     rules.load();
 
     int min_rev = options.options.value("resume-from").toInt();
+    int max_rev = options.options.value("max-rev").toInt();
     if (min_rev < 1)
         min_rev = 1;
 
@@ -44,8 +73,6 @@ int main(int argc, char **argv)
     QHash<QString, Repository *> repositories;
     foreach (Rules::Repository rule, rules.repositories()) {
         Repository *repo = new Repository(rule);
-        if (min_rev > 1)
-            repo->reloadBranches();
         repositories.insert(rule.name, repo);
     }
 
@@ -53,13 +80,19 @@ int main(int argc, char **argv)
     Svn svn(options.pathToRepository);
     svn.setMatchRules(rules.matchRules());
     svn.setRepositories(repositories);
+    svn.setIdentityMap(loadIdentityMapFile(options.options.value("identity-map")));
 
-    int max_rev = svn.youngestRevision();
+    if (max_rev < 1)
+        max_rev = svn.youngestRevision();
     for (int i = min_rev; i <= max_rev; ++i)
         if (!svn.exportRevision(i))
             break;
 
-    qDeleteAll(repositories);
+    foreach (Repository *repo, repositories) {
+        repo->finalizeTags();
+        delete repo;
+    }
+
     // success
     return 0;
 }
This page took 0.025689 seconds and 4 git commands to generate.