@@ -79,6 +79,7 @@ class FastImportRepository : public Repository
7979 };
8080 FastImportRepository (const Rules::Repository &rule);
8181 int setupIncremental (int &cutoff);
82+ void restoreAnnotatedTags ();
8283 void restoreBranchNotes ();
8384 void restoreLog ();
8485 ~FastImportRepository ();
@@ -186,6 +187,7 @@ class ForwardingRepository : public Repository
186187 ForwardingRepository (const QString &n, Repository *r, const QString &p) : name(n), repo(r), prefix(p) {}
187188
188189 int setupIncremental (int &) { return 1 ; }
190+ void restoreAnnotatedTags () {}
189191 void restoreBranchNotes () {}
190192 void restoreLog () {}
191193
@@ -253,6 +255,33 @@ class ProcessCache: QLinkedList<FastImportRepository *>
253255};
254256static ProcessCache processCache;
255257
258+ QDataStream &operator <<(QDataStream &out, const FastImportRepository::AnnotatedTag &annotatedTag)
259+ {
260+ out << annotatedTag.supportingRef
261+ << annotatedTag.svnprefix
262+ << annotatedTag.author
263+ << annotatedTag.log
264+ << (quint64) annotatedTag.dt
265+ << (qint64) annotatedTag.revnum ;
266+ return out;
267+ }
268+
269+ QDataStream &operator >>(QDataStream &in, FastImportRepository::AnnotatedTag &annotatedTag)
270+ {
271+ quint64 dt;
272+ qint64 revnum;
273+
274+ in >> annotatedTag.supportingRef
275+ >> annotatedTag.svnprefix
276+ >> annotatedTag.author
277+ >> annotatedTag.log
278+ >> dt
279+ >> revnum;
280+ annotatedTag.dt = (uint) dt;
281+ annotatedTag.revnum = (int ) revnum;
282+ return in;
283+ }
284+
256285Repository *createRepository (const Rules::Repository &rule, const QHash<QString, Repository *> &repositories)
257286{
258287 if (rule.forwardTo .isEmpty ())
@@ -272,6 +301,13 @@ static QString marksFileName(QString name)
272301 return name;
273302}
274303
304+ static QString annotatedTagsFileName (QString name)
305+ {
306+ name.replace (' /' , ' _' );
307+ name.prepend (" annotatedTags-" );
308+ return name;
309+ }
310+
275311static QString branchNotesFileName (QString name)
276312{
277313 name.replace (' /' , ' _' );
@@ -463,6 +499,17 @@ int FastImportRepository::setupIncremental(int &cutoff)
463499 return cutoff;
464500}
465501
502+ void FastImportRepository::restoreAnnotatedTags ()
503+ {
504+ QFile annotatedTagsFile (name + " /" + annotatedTagsFileName (name));
505+ if (!annotatedTagsFile.exists ())
506+ return ;
507+ annotatedTagsFile.open (QIODevice::ReadOnly);
508+ QDataStream annotatedTagsStream (&annotatedTagsFile);
509+ annotatedTagsStream >> annotatedTags;
510+ annotatedTagsFile.close ();
511+ }
512+
466513void FastImportRepository::restoreBranchNotes ()
467514{
468515 QFile branchNotesFile (name + " /" + branchNotesFileName (name));
@@ -734,7 +781,13 @@ void FastImportRepository::finalizeTags()
734781 if (annotatedTags.isEmpty ())
735782 return ;
736783
737- printf (" Finalising tags for %s..." , qPrintable (name));
784+ QFile annotatedTagsFile (name + " /" + annotatedTagsFileName (name));
785+ annotatedTagsFile.open (QIODevice::WriteOnly);
786+ QDataStream annotatedTagsStream (&annotatedTagsFile);
787+ annotatedTagsStream << annotatedTags;
788+ annotatedTagsFile.close ();
789+
790+ printf (" Finalising annotated tags for %s..." , qPrintable (name));
738791 startFastImport ();
739792
740793 QHash<QString, AnnotatedTag>::ConstIterator it = annotatedTags.constBegin ();
0 commit comments