X-Git-Url: http://andersk.mit.edu/gitweb/svn-all-fast-export.git/blobdiff_plain/b0fb9f085e51abc93f2069645ee33aeed0b6b093..1a6887295271402341658c9d0c3a17fa8bd891da:/src/repository.cpp diff --git a/src/repository.cpp b/src/repository.cpp index 8a5f4f0..c3f52fb 100644 --- a/src/repository.cpp +++ b/src/repository.cpp @@ -33,7 +33,7 @@ Repository::Repository(const Rules::Repository &rule) // create the default branch branches["master"].isCreated = true; - fastImport.setWorkingDirectory(rule.name); + fastImport.setWorkingDirectory(name); fastImport.setProcessChannelMode(QProcess::ForwardedChannels); } @@ -45,6 +45,36 @@ Repository::~Repository() } } +void Repository::reloadBranches() +{ + QHash::Iterator it = branches.begin(), + end = branches.end(); + for ( ; it != end; ++it) { + QString branchRef = it.key(); + if (!branchRef.startsWith("refs/heads/")) + branchRef.prepend("refs/heads/"); + + bool branchExists; + // does this branch already exist? + QProcess revParse; + revParse.setWorkingDirectory(name); + revParse.start("git-rev-parse", QStringList() << "--verify" << branchRef); + revParse.waitForFinished(); + + if (revParse.exitCode() == 0) + branchExists = true; + else + branchExists = false; + + if (branchExists) { + startFastImport(); + fastImport.write("reset " + branchRef.toUtf8() + + "\nfrom " + branchRef.toUtf8() + "^0\n"); + it->isCreated = true; + } + } +} + Repository::Transaction *Repository::newTransaction(const QString &branch, const QString &svnprefix, int revnum) { @@ -61,6 +91,12 @@ Repository::Transaction *Repository::newTransaction(const QString &branch, const txn->revnum = revnum; txn->lastmark = revnum; + startFastImport(); + return txn; +} + +void Repository::startFastImport() +{ if (fastImport.state() == QProcess::NotRunning) { // start the process #ifndef DRY_RUN @@ -69,8 +105,6 @@ Repository::Transaction *Repository::newTransaction(const QString &branch, const fastImport.start("/bin/cat", QStringList()); #endif } - - return txn; } Repository::Transaction::~Transaction()