]> andersk Git - svn-all-fast-export.git/blobdiff - src/ruleparser.cpp
Add support for annotated tags
[svn-all-fast-export.git] / src / ruleparser.cpp
index e9a1192901757643e7b2f05cec8d4d7a87ade872..6e799c4ccdbc147fea4005a13f24eb4a3cf3f2a9 100644 (file)
@@ -51,9 +51,11 @@ void Rules::load()
     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 matchRevLine("(min|max) revision (\\d+)", Qt::CaseInsensitive);
+    QRegExp matchAnnotateLine("annotated\\s+(\\S+)", Qt::CaseInsensitive);
 
     QTextStream s(&file);
     enum { ReadingNone, ReadingRepository, ReadingMatch } state = ReadingNone;
@@ -97,7 +99,23 @@ void Rules::load()
                 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 (matchAnnotateLine.exactMatch(line)) {
+                match.annotate = matchAnnotateLine.cap(1) == "true";
+                continue;
             } else if (line == "end match") {
+                if (!match.repository.isEmpty())
+                    match.action = Match::Export;
                 m_matchRules += match;
                 state = ReadingNone;
                 continue;
@@ -125,3 +143,12 @@ void Rules::load()
         }
     }
 }
+
+#ifndef QT_NO_DEBUG_STREAM
+QDebug operator<<(QDebug s, const Rules::Match &rule)
+{
+    s.nospace() << rule.rx.pattern() << " (line " << rule.lineNumber << ")";
+    return s.space();
+}
+
+#endif
This page took 0.10267 seconds and 4 git commands to generate.