X-Git-Url: http://andersk.mit.edu/gitweb/svn-all-fast-export.git/blobdiff_plain/5a7327f691416d3b061318da00fbd85a341f710a..HEAD:/src/repository.h diff --git a/src/repository.h b/src/repository.h index 7779bdf..ad23559 100644 --- a/src/repository.h +++ b/src/repository.h @@ -26,18 +26,76 @@ class Repository { public: - struct Branch + class Transaction { - QString branchFrom; - bool isCreated; - }; + Q_DISABLE_COPY(Transaction) + friend class Repository; + + Repository *repository; + QByteArray branch; + QByteArray svnprefix; + QByteArray author; + QByteArray log; + uint datetime; + int revnum; + + QStringList deletedFiles; + QByteArray modifiedFiles; + + inline Transaction() {} + public: + ~Transaction(); + void commit(); + void setAuthor(const QByteArray &author); + void setDateTime(uint dt); + void setLog(const QByteArray &log); + + void deleteFile(const QString &path); + QIODevice *addFile(const QString &path, int mode, qint64 length); + }; Repository(const Rules::Repository &rule); ~Repository(); + void reloadBranches(); + void createBranch(const QString &branch, int revnum, + const QString &branchFrom, int revFrom); + Transaction *newTransaction(const QString &branch, const QString &svnprefix, int revnum); + + void createAnnotatedTag(const QString &name, const QString &svnprefix, int revnum, + const QByteArray &author, uint dt, + const QByteArray &log); + void finalizeTags(); + private: + struct Branch + { + int created; + }; + struct AnnotatedTag + { + QString supportingRef; + QByteArray svnprefix; + QByteArray author; + QByteArray log; + uint dt; + int revnum; + }; + QHash branches; + QHash annotatedTags; + QString name; QProcess fastImport; + int commitCount; + int outstandingTransactions; + int lastmark; + bool processHasStarted; + + void startFastImport(); + void closeFastImport(); + + friend class ProcessCache; + Q_DISABLE_COPY(Repository) }; #endif