static ProcessCache processCache;
Repository::Repository(const Rules::Repository &rule)
- : name(rule.name), commitCount(0), processHasStarted(false)
+ : name(rule.name), commitCount(0), outstandingTransactions(0), processHasStarted(false)
{
foreach (Rules::Repository::Branch branchRule, rule.branches) {
Branch branch;
Repository::~Repository()
{
+ Q_ASSERT(outstandingTransactions == 0);
closeFastImport();
}
txn->svnprefix = svnprefix.toUtf8();
txn->datetime = 0;
txn->revnum = revnum;
- txn->lastmark = revnum;
if ((++commitCount % 10000) == 0)
// write everything to disk every 10000 commits
fastImport.write("checkpoint\n");
+ if (++outstandingTransactions == 0)
+ lastmark = 1; // reset the mark number
return txn;
}
Repository::Transaction::~Transaction()
{
+ --repository->outstandingTransactions;
}
void Repository::Transaction::setAuthor(const QByteArray &a)
QIODevice *Repository::Transaction::addFile(const QString &path, int mode, qint64 length)
{
- int mark = ++lastmark;
+ int mark = ++repository->lastmark;
if (modifiedFiles.capacity() == 0)
modifiedFiles.reserve(2048);
QTextStream s(&repository->fastImport);
s << "commit " << branchRef << endl;
- s << "mark :" << revnum << endl;
s << "committer " << QString::fromUtf8(author) << ' ' << datetime << " -0000" << endl;
Branch &br = repository->branches[branch];