aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/repository.cpp2
-rw-r--r--src/ruleparser.cpp4
-rw-r--r--src/ruleparser.h26
-rw-r--r--src/svn.cpp6
4 files changed, 27 insertions, 11 deletions
diff --git a/src/repository.cpp b/src/repository.cpp
index d4cb2ad..2a2b436 100644
--- a/src/repository.cpp
+++ b/src/repository.cpp
@@ -275,7 +275,7 @@ Repository *makeRepository(const Rules::Repository &rule, const QHash<QString, R
return new FastImportRepository(rule);
Repository *r = repositories[rule.forwardTo];
if (!r) {
- qCritical() << "no repository with name" << rule.forwardTo << "found at line" << rule.lineNumber;
+ qCritical() << "no repository with name" << rule.forwardTo << "found at" << rule.info();
return r;
}
return new PrefixingRepository(r, rule.prefix);
diff --git a/src/ruleparser.cpp b/src/ruleparser.cpp
index 10a22ac..5927c5a 100644
--- a/src/ruleparser.cpp
+++ b/src/ruleparser.cpp
@@ -187,12 +187,14 @@ void Rules::load()
repo = Repository(); // clear
repo.name = repoLine.cap(1);
repo.lineNumber = lineNumber;
+ repo.filename = filename;
} else if (isMatchRule) {
// match rule
state = ReadingMatch;
match = Match();
match.rx = QRegExp(matchLine.cap(1), Qt::CaseSensitive, QRegExp::RegExp2);
match.lineNumber = lineNumber;
+ match.filename = filename;
} else if (isVariableRule) {
QString variable = declareLine.cap(1);
QString value = declareLine.cap(2);
@@ -207,7 +209,7 @@ void Rules::load()
#ifndef QT_NO_DEBUG_STREAM
QDebug operator<<(QDebug s, const Rules::Match &rule)
{
- s.nospace() << rule.rx.pattern() << " (line " << rule.lineNumber << ")";
+ s.nospace() << rule.info();
return s.space();
}
diff --git a/src/ruleparser.h b/src/ruleparser.h
index afd1db2..e5cbaea 100644
--- a/src/ruleparser.h
+++ b/src/ruleparser.h
@@ -22,11 +22,18 @@
#include <QRegExp>
#include <QString>
#include <QStringList>
+#include <QStringBuilder>
class Rules
{
public:
- struct Repository
+ struct Rule
+ {
+ QString filename;
+ int lineNumber;
+ Rule() : lineNumber(0) {}
+ };
+ struct Repository : Rule
{
struct Branch
{
@@ -35,15 +42,19 @@ public:
QString name;
QList<Branch> branches;
- int lineNumber;
QString forwardTo;
QString prefix;
- Repository() : lineNumber(0) { }
+ Repository() { }
+ const QString info() const {
+ const QString info = Rule::filename % ":" % QByteArray::number(Rule::lineNumber);
+ return info;
+ }
+
};
- struct Match
+ struct Match : Rule
{
QRegExp rx;
QString repository;
@@ -51,7 +62,6 @@ public:
QString prefix;
int minRevision;
int maxRevision;
- int lineNumber;
bool annotate;
enum Action {
@@ -60,7 +70,11 @@ public:
Recurse
} action;
- Match() : minRevision(-1), maxRevision(-1), lineNumber(0), annotate(false), action(Ignore) { }
+ Match() : minRevision(-1), maxRevision(-1), annotate(false), action(Ignore) { }
+ const QString info() const {
+ const QString info = rx.pattern() % " (" % Rule::filename % ":" % QByteArray::number(Rule::lineNumber) % ")";
+ return info;
+ }
};
Rules(const QString &filename);
diff --git a/src/svn.cpp b/src/svn.cpp
index dd3ce53..7298e08 100644
--- a/src/svn.cpp
+++ b/src/svn.cpp
@@ -584,17 +584,17 @@ int SvnRevision::exportDispatch(const char *key, const svn_fs_path_change_t *cha
case Rules::Match::Recurse:
if(ruledebug)
- qDebug() << "rev" << revnum << qPrintable(current) << "matched rule:" << rule.lineNumber << "(" << rule.rx.pattern() << ")" << " " << "recursing.";
+ qDebug() << "rev" << revnum << qPrintable(current) << "matched rule:" << rule.info() << " " << "recursing.";
return recurse(key, change, path_from, rev_from, changes, pool);
case Rules::Match::Export:
if(ruledebug)
- qDebug() << "rev" << revnum << qPrintable(current) << "matched rule:" << rule.lineNumber << "(" << rule.rx.pattern() << ")" << " " << "exporting.";
+ qDebug() << "rev" << revnum << qPrintable(current) << "matched rule:" << rule.info() << " " << "exporting.";
if (exportInternal(key, change, path_from, rev_from, current, rule) == EXIT_SUCCESS)
return EXIT_SUCCESS;
if (change->change_kind != svn_fs_path_change_delete) {
if(ruledebug)
- qDebug() << "rev" << revnum << qPrintable(current) << "matched rule:" << rule.lineNumber << "(" << rule.rx.pattern() << ")" << " " << "Unable to export non path removal.";
+ qDebug() << "rev" << revnum << qPrintable(current) << "matched rule:" << rule.info() << " " << "Unable to export non path removal.";
return EXIT_FAILURE;
}
// we know that the default action inside recurse is to recurse further or to ignore,