]> andersk Git - svn-all-fast-export.git/blobdiff - src/ruleparser.cpp
Refactor and add the ability to recurse into certain subdirs
[svn-all-fast-export.git] / src / ruleparser.cpp
index 6d3e4174793feac6eb0b985f983398f5d2064314..b17bb9631180de81e1a120fe6f6714b3735ee7cd 100644 (file)
@@ -48,12 +48,12 @@ void Rules::load()
 
     // initialize the regexps we will use
     QRegExp repoLine("create repository\\s+(\\S+)", Qt::CaseInsensitive);
-    QRegExp repoBranchLine("branch\\s+(\\S+)\\s+from\\s+(\\S+)", Qt::CaseInsensitive);
+    QRegExp repoBranchLine("branch\\s+(\\S+)", Qt::CaseInsensitive);
 
     QRegExp matchLine("match\\s+(.*)", Qt::CaseInsensitive);
+    QRegExp matchActionLine("action\\s+(\\w+)", Qt::CaseInsensitive);
     QRegExp matchRepoLine("repository\\s+(\\S+)", Qt::CaseInsensitive);
     QRegExp matchBranchLine("branch\\s+(\\S+)", Qt::CaseInsensitive);
-    QRegExp matchPathLine("path\\s+(.*)", Qt::CaseInsensitive);
     QRegExp matchRevLine("(min|max) revision (\\d+)", Qt::CaseInsensitive);
 
     QTextStream s(&file);
@@ -77,7 +77,6 @@ void Rules::load()
             if (repoBranchLine.exactMatch(line)) {
                 Repository::Branch branch;
                 branch.name = repoBranchLine.cap(1);
-                branch.branchFrom = repoBranchLine.cap(2);
 
                 repo.branches += branch;
                 continue;
@@ -93,16 +92,26 @@ void Rules::load()
             } else if (matchBranchLine.exactMatch(line)) {
                 match.branch = matchBranchLine.cap(1);
                 continue;
-            } else if (matchPathLine.exactMatch(line)) {
-                match.path = matchPathLine.cap(1);
-                continue;
             } else if (matchRevLine.exactMatch(line)) {
                 if (matchRevLine.cap(1) == "min")
                     match.minRevision = matchRevLine.cap(2).toInt();
                 else            // must be max
                     match.maxRevision = matchRevLine.cap(2).toInt();
                 continue;
+            } else if (matchActionLine.exactMatch(line)) {
+                QString action = matchActionLine.cap(1);
+                if (action == "export")
+                    match.action = Match::Export;
+                else if (action == "ignore")
+                    match.action = Match::Ignore;
+                else if (action == "recurse")
+                    match.action = Match::Recurse;
+                else
+                    qFatal("Invalid action \"%s\" on line %d", qPrintable(action), lineNumber);
+                continue;
             } else if (line == "end match") {
+                if (!match.repository.isEmpty())
+                    match.action = Match::Export;
                 m_matchRules += match;
                 state = ReadingNone;
                 continue;
This page took 0.600984 seconds and 4 git commands to generate.