Revision: 76490
          http://sourceforge.net/p/brlcad/code/76490
Author:   starseeker
Date:     2020-07-25 11:11:21 +0000 (Sat, 25 Jul 2020)
Log Message:
-----------
Match the notes formatting to that of the main BRL-CAD conversion so we can 
also post-process these repositories to remove the notes.

Modified Paths:
--------------
    brlcad/trunk/misc/repoconv/svn2git/svn-fast-export/CMakeLists.txt
    brlcad/trunk/misc/repoconv/svn2git/svn-fast-export/repository.cpp
    brlcad/trunk/misc/repoconv/svn2git/svn-fast-export/repository.h
    brlcad/trunk/misc/repoconv/svn2git/svn-fast-export/svn.cpp

Modified: brlcad/trunk/misc/repoconv/svn2git/svn-fast-export/CMakeLists.txt
===================================================================
--- brlcad/trunk/misc/repoconv/svn2git/svn-fast-export/CMakeLists.txt   
2020-07-25 10:38:15 UTC (rev 76489)
+++ brlcad/trunk/misc/repoconv/svn2git/svn-fast-export/CMakeLists.txt   
2020-07-25 11:11:21 UTC (rev 76490)
@@ -16,6 +16,7 @@
   )
 
 add_definitions(-fPIC)
+add_definitions(-g)
 
 include(CheckFunctionExists)
 set(CMAKE_REQUIRED_INCLUDES ${SUBVERSION_INCLUDE_DIRS})

Modified: brlcad/trunk/misc/repoconv/svn2git/svn-fast-export/repository.cpp
===================================================================
--- brlcad/trunk/misc/repoconv/svn2git/svn-fast-export/repository.cpp   
2020-07-25 10:38:15 UTC (rev 76489)
+++ brlcad/trunk/misc/repoconv/svn2git/svn-fast-export/repository.cpp   
2020-07-25 11:11:21 UTC (rev 76490)
@@ -37,6 +37,7 @@
     {
         QString supportingRef;
         QByteArray svnprefix;
+        QByteArray svnauthor;
         QByteArray author;
         QByteArray log;
         uint dt;
@@ -50,6 +51,7 @@
         FastImportRepository *repository;
         QByteArray branch;
         QByteArray svnprefix;
+        QByteArray svnauthor;
         QByteArray author;
         QByteArray log;
         uint datetime;
@@ -65,6 +67,7 @@
         ~Transaction();
         int commit();
 
+        void setSVNAuthor(const QByteArray &author);
         void setAuthor(const QByteArray &author);
         void setDateTime(uint dt);
         void setLog(const QByteArray &log);
@@ -91,7 +94,7 @@
     Repository::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 &svnauthor, const QByteArray 
&author, uint dt,
                             const QByteArray &log);
     void finalizeTags();
     void saveBranchNotes();
@@ -168,6 +171,7 @@
         ~Transaction() { delete txn; }
         int commit() { return txn->commit(); }
 
+        void setSVNAuthor(const QByteArray &svnauthor) { 
txn->setSVNAuthor(svnauthor); }
         void setAuthor(const QByteArray &author) { txn->setAuthor(author); }
         void setDateTime(uint dt) { txn->setDateTime(dt); }
         void setLog(const QByteArray &log) { txn->setLog(log); }
@@ -206,9 +210,9 @@
     }
 
     void createAnnotatedTag(const QString &name, const QString &svnprefix, int 
revnum,
-                            const QByteArray &author, uint dt,
+                            const QByteArray &svnauthor, const QByteArray 
&author, uint dt,
                             const QByteArray &log)
-    { repo->createAnnotatedTag(name, svnprefix, revnum, author, dt, log); }
+    { repo->createAnnotatedTag(name, svnprefix, revnum, svnauthor, author, dt, 
log); }
     void finalizeTags() { /* loop that called this will invoke it on 'repo' 
too */ }
     void saveBranchNotes() { /* loop that called this will invoke it on 'repo' 
too */ }
     void commit() { repo->commit(); }
@@ -754,7 +758,7 @@
 }
 
 void FastImportRepository::createAnnotatedTag(const QString &ref, const 
QString &svnprefix,
-                                              int revnum,
+                                              int revnum, const QByteArray 
&svnauthor,
                                               const QByteArray &author, uint 
dt,
                                               const QByteArray &log)
 {
@@ -771,6 +775,7 @@
     tag.supportingRef = ref;
     tag.svnprefix = svnprefix.toUtf8();
     tag.revnum = revnum;
+    tag.svnauthor = svnauthor;
     tag.author = author;
     tag.log = log;
     tag.dt = dt;
@@ -799,7 +804,7 @@
         if (!message.endsWith('\n'))
             message += '\n';
         if (CommandLineParser::instance()->contains("add-metadata"))
-            message += "\n" + formatMetadataMessage(tag.svnprefix, tag.revnum, 
tagName.toUtf8());
+            message += "\n" + formatMetadataMessage(tag.svnauthor, tag.revnum, 
tagName.toUtf8());
 
         {
             QByteArray branchRef = tag.supportingRef.toUtf8();
@@ -823,9 +828,10 @@
         // easy way to attach a note to the tag itself with fast-import.
         if (CommandLineParser::instance()->contains("add-metadata-notes")) {
             Repository::Transaction *txn = newTransaction(tag.supportingRef, 
tag.svnprefix, tag.revnum);
+            txn->setSVNAuthor(tag.svnauthor);
             txn->setAuthor(tag.author);
             txn->setDateTime(tag.dt);
-            bool written = 
txn->commitNote(formatMetadataMessage(tag.svnprefix, tag.revnum, 
tagName.toUtf8()), true);
+            bool written = 
txn->commitNote(formatMetadataMessage(tag.svnauthor, tag.revnum, 
tagName.toUtf8()), true);
             delete txn;
 
             if (written && !fastImport.waitForBytesWritten(-1))
@@ -906,11 +912,9 @@
     }
 }
 
-QByteArray Repository::formatMetadataMessage(const QByteArray &svnprefix, int 
revnum, const QByteArray &tag)
+QByteArray Repository::formatMetadataMessage(const QByteArray &author, int 
revnum, const QByteArray &tag)
 {
-    QByteArray msg = "svn path=" + svnprefix + "; revision=" + 
QByteArray::number(revnum);
-    if (!tag.isEmpty())
-        msg += "; tag=" + tag;
+    QByteArray msg = "svn:account:" + author + "\nsvn:revision:" + 
QByteArray::number(revnum);
     msg += "\n";
     return msg;
 }
@@ -951,6 +955,11 @@
     repository->forgetTransaction(this);
 }
 
+void FastImportRepository::Transaction::setSVNAuthor(const QByteArray &a)
+{
+    svnauthor = a;
+}
+
 void FastImportRepository::Transaction::setAuthor(const QByteArray &a)
 {
     author = a;
@@ -1112,7 +1121,7 @@
     if (!message.endsWith('\n'))
         message += '\n';
     if (CommandLineParser::instance()->contains("add-metadata"))
-        message += "\n" + Repository::formatMetadataMessage(svnprefix, revnum);
+        message += "\n" + Repository::formatMetadataMessage(svnauthor, revnum);
 
     // Call external message filter if provided
     message = repository->msgFilter(message);
@@ -1197,7 +1206,7 @@
 
     // Commit metadata note if requested
     if (CommandLineParser::instance()->contains("add-metadata-notes"))
-        commitNote(Repository::formatMetadataMessage(svnprefix, revnum), 
false);
+        commitNote(Repository::formatMetadataMessage(svnauthor, revnum), 
false);
 
     while (repository->fastImport.bytesToWrite())
         if (!repository->fastImport.waitForBytesWritten(-1))

Modified: brlcad/trunk/misc/repoconv/svn2git/svn-fast-export/repository.h
===================================================================
--- brlcad/trunk/misc/repoconv/svn2git/svn-fast-export/repository.h     
2020-07-25 10:38:15 UTC (rev 76489)
+++ brlcad/trunk/misc/repoconv/svn2git/svn-fast-export/repository.h     
2020-07-25 11:11:21 UTC (rev 76490)
@@ -103,6 +103,7 @@
         virtual ~Transaction() {}
         virtual int commit() = 0;
 
+        virtual void setSVNAuthor(const QByteArray &author) = 0;
         virtual void setAuthor(const QByteArray &author) = 0;
         virtual void setDateTime(uint dt) = 0;
         virtual void setLog(const QByteArray &log) = 0;
@@ -128,7 +129,7 @@
     virtual Repository::Transaction *newTransaction(const QString &branch, 
const QString &svnprefix, int revnum) = 0;
 
     virtual void createAnnotatedTag(const QString &name, const QString 
&svnprefix, int revnum,
-                                    const QByteArray &author, uint dt,
+                                    const QByteArray &svnauthor, const 
QByteArray &author, uint dt,
                                     const QByteArray &log) = 0;
     virtual void finalizeTags() = 0;
     virtual void saveBranchNotes() = 0;

Modified: brlcad/trunk/misc/repoconv/svn2git/svn-fast-export/svn.cpp
===================================================================
--- brlcad/trunk/misc/repoconv/svn2git/svn-fast-export/svn.cpp  2020-07-25 
10:38:15 UTC (rev 76489)
+++ brlcad/trunk/misc/repoconv/svn2git/svn-fast-export/svn.cpp  2020-07-25 
11:11:21 UTC (rev 76490)
@@ -343,6 +343,7 @@
     int revnum;
 
     // must call fetchRevProps first:
+    QByteArray svnauthor;
     QByteArray authorident;
     QByteArray log;
     uint epoch;
@@ -517,7 +518,7 @@
 
     apr_hash_t *revprops;
     SVN_ERR(svn_fs_revision_proplist(&revprops, fs, revnum, pool));
-    svn_string_t *svnauthor = (svn_string_t*)apr_hash_get(revprops, 
"svn:author", APR_HASH_KEY_STRING);
+    svn_string_t *lsvnauthor = (svn_string_t*)apr_hash_get(revprops, 
"svn:author", APR_HASH_KEY_STRING);
     svn_string_t *svndate = (svn_string_t*)apr_hash_get(revprops, "svn:date", 
APR_HASH_KEY_STRING);
     svn_string_t *svnlog = (svn_string_t*)apr_hash_get(revprops, "svn:log", 
APR_HASH_KEY_STRING);
 
@@ -525,13 +526,14 @@
         log = svnlog->data;
     else
         log.clear();
-    authorident = svnauthor ? identities.value(svnauthor->data) : QByteArray();
+    authorident = lsvnauthor ? identities.value(lsvnauthor->data) : 
QByteArray();
+    svnauthor = lsvnauthor ? QByteArray(lsvnauthor->data) : QByteArray();
     epoch = svndate ? get_epoch(svndate->data) : 0;
     if (authorident.isEmpty()) {
-        if (!svnauthor || svn_string_isempty(svnauthor))
+        if (!lsvnauthor || svn_string_isempty(lsvnauthor))
             authorident = "nobody <nobody@localhost>";
         else
-            authorident = svnauthor->data + QByteArray(" <") + svnauthor->data 
+
+            authorident = lsvnauthor->data + QByteArray(" <") + 
lsvnauthor->data +
                 QByteArray("@") + userdomain.toUtf8() + QByteArray(">");
     }
     propsFetched = true;
@@ -548,6 +550,7 @@
     }
 
     foreach (Repository::Transaction *txn, transactions) {
+        txn->setSVNAuthor(svnauthor);
         txn->setAuthor(authorident);
         txn->setDateTime(epoch);
         txn->setLog(log);
@@ -830,7 +833,7 @@
             if (rule.annotate) {
                 // create an annotated tag
                 fetchRevProps();
-                repo->createAnnotatedTag(branch, svnprefix, revnum, 
authorident,
+                repo->createAnnotatedTag(branch, svnprefix, revnum, svnauthor, 
authorident,
                                          epoch, log);
             }
             return EXIT_SUCCESS;
@@ -940,7 +943,7 @@
     if (rule.annotate) {
         // create an annotated tag
         fetchRevProps();
-        repo->createAnnotatedTag(branch, svnprefix, revnum, authorident,
+        repo->createAnnotatedTag(branch, svnprefix, revnum, svnauthor, 
authorident,
                                  epoch, log);
     }
 

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to