// 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);
if (repoBranchLine.exactMatch(line)) {
Repository::Branch branch;
branch.name = repoBranchLine.cap(1);
- branch.branchFrom = repoBranchLine.cap(2);
repo.branches += branch;
continue;
} 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;