diff options
author | Thiago Macieira <thiago@cassini.local.lan> | 2007-12-24 11:11:50 -0200 |
---|---|---|
committer | Thiago Macieira <thiago@cassini.local.lan> | 2007-12-24 11:11:50 -0200 |
commit | 1a6887295271402341658c9d0c3a17fa8bd891da (patch) | |
tree | a1edc5051306832e65f6083548ef084663f61dc1 /src/repository.cpp | |
parent | b0fb9f085e51abc93f2069645ee33aeed0b6b093 (diff) | |
download | svn2git-1a6887295271402341658c9d0c3a17fa8bd891da.tar svn2git-1a6887295271402341658c9d0c3a17fa8bd891da.tar.gz svn2git-1a6887295271402341658c9d0c3a17fa8bd891da.tar.bz2 svn2git-1a6887295271402341658c9d0c3a17fa8bd891da.tar.xz svn2git-1a6887295271402341658c9d0c3a17fa8bd891da.zip |
Add support for resuming work
Diffstat (limited to 'src/repository.cpp')
-rw-r--r-- | src/repository.cpp | 40 |
1 files changed, 37 insertions, 3 deletions
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<QString, Branch>::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() |