diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/repository.cpp | 23 | 
1 files changed, 21 insertions, 2 deletions
| diff --git a/src/repository.cpp b/src/repository.cpp index 426eeff..88b17c3 100644 --- a/src/repository.cpp +++ b/src/repository.cpp @@ -52,7 +52,7 @@ public:  static ProcessCache processCache;  Repository::Repository(const Rules::Repository &rule) -    : name(rule.name), commitCount(0), outstandingTransactions(0), processHasStarted(false) +    : name(rule.name), commitCount(0), outstandingTransactions(0), lastmark(0), processHasStarted(false)  {      foreach (Rules::Repository::Branch branchRule, rule.branches) {          Branch branch; @@ -97,6 +97,19 @@ void Repository::closeFastImport()      }      processHasStarted = false;      processCache.remove(this); +    // Save the exported marks +    QString revsFile = name; +    revsFile.replace('/', '_'); +    revsFile.prepend("revisions-"); +    QFile exportedMarks(revsFile); +    qDebug() << exportedMarks.open(QIODevice::Truncate | QIODevice::Text | QIODevice::WriteOnly); + +    int mark; +    foreach(mark, exportedCommits) +    { +        exportedMarks.write(QString(":%2 r%1\n").arg(mark).arg(commitMarks.value(mark)).toLocal8Bit()); +    } +    exportedMarks.close();  }  void Repository::reloadBranches() @@ -148,6 +161,7 @@ void Repository::createBranch(const QString &branch, int revnum,      if(commitMarks.contains(closestCommit))      {          branchFromRef = ":" + QByteArray::number(commitMarks.value(closestCommit)); +        qDebug() << "branching from" << closestCommit << "(svn reports r" << branchRevNum << ")";      } else {          qWarning() << branch << "in repository" << name << "is branching but no exported commits exist in repository"                  << "creating an empty branch."; @@ -269,6 +283,11 @@ void Repository::startFastImport()          processHasStarted = true;          // start the process +        QString marksFile = name; +        marksFile.replace('/', '_'); +        marksFile.prepend("marks-"); +        QStringList marksOptions; +        marksOptions << "--export-marks=" + marksFile;          QString outputFile = name;          outputFile.replace('/', '_');          outputFile.prepend("log-"); @@ -276,7 +295,7 @@ void Repository::startFastImport()          fastImport.setProcessChannelMode(QProcess::MergedChannels);          if (!CommandLineParser::instance()->contains("dry-run")) { -            fastImport.start("git", QStringList() << "fast-import"); +            fastImport.start("git", QStringList() << "fast-import" << marksOptions);          } else {              fastImport.start("/bin/cat", QStringList());          } | 
