Revision: 76515
          http://sourceforge.net/p/brlcad/code/76515
Author:   starseeker
Date:     2020-07-27 01:12:45 +0000 (Mon, 27 Jul 2020)
Log Message:
-----------
Start trying to incorporate CVS generated updates into the repowork flow

Modified Paths:
--------------
    brlcad/trunk/misc/repoconv/verify/verify.cpp
    brlcad/trunk/misc/repowork/commit.cpp

Modified: brlcad/trunk/misc/repoconv/verify/verify.cpp
===================================================================
--- brlcad/trunk/misc/repoconv/verify/verify.cpp        2020-07-26 23:29:23 UTC 
(rev 76514)
+++ brlcad/trunk/misc/repoconv/verify/verify.cpp        2020-07-27 01:12:45 UTC 
(rev 76515)
@@ -59,7 +59,7 @@
 void
 get_exec_paths(std::vector<filemodify> &m)
 {
-    std::string exec_cmd = std::string("cd brlcad && find . -type f ! -path 
\\*/CVS/\\* -executable | sed -e 's/.\\///' > ../exec.txt && cd ..");
+    std::string exec_cmd = std::string("cd brlcad && find . -type f ! -name 
.cvsignore ! -path \\*/CVS/\\* -executable | sed -e 's/.\\///' > ../exec.txt && 
cd ..");
     run_cmd(exec_cmd);
     std::ifstream infile("exec.txt", std::ifstream::binary);
     if (!infile.good()) {
@@ -100,7 +100,7 @@
 void
 get_noexec_paths(std::vector<filemodify> &m)
 {
-    std::string noexec_cmd = std::string("cd brlcad && find . -type f ! -path 
\\*/CVS/\\* ! -executable | sed -e 's/.\\///' > ../noexec.txt && cd ..");
+    std::string noexec_cmd = std::string("cd brlcad && find . -type f ! -name 
.cvsignore ! -path \\*/CVS/\\* ! -executable | sed -e 's/.\\///' > 
../noexec.txt && cd ..");
     run_cmd(noexec_cmd);
     std::ifstream infile("noexec.txt", std::ifstream::binary);
     if (!infile.good()) {

Modified: brlcad/trunk/misc/repowork/commit.cpp
===================================================================
--- brlcad/trunk/misc/repowork/commit.cpp       2020-07-26 23:29:23 UTC (rev 
76514)
+++ brlcad/trunk/misc/repowork/commit.cpp       2020-07-27 01:12:45 UTC (rev 
76515)
@@ -507,6 +507,25 @@
        return 0;
     }
 
+    // If this is a rebuild, write the blobs first
+    if (c->id.sha1.length()) {
+       if (c->s->rebuild_commits.find(c->id.sha1) != 
c->s->rebuild_commits.end()) {
+           std::cout << "rebuild commit!\n";
+           std::string sha1blobs = c->id.sha1 + std::string("-blob.fi");
+           std::ifstream s1b(sha1blobs, std::ifstream::binary | std::ios::ate);
+           std::streamsize size = s1b.tellg();
+           s1b.seekg(0, std::ios::beg);
+           std::vector<char> buffer(size);
+           if (s1b.read(buffer.data(), size)) {
+               outfile.write(reinterpret_cast<char*>(buffer.data()), size);
+           } else {
+               std::cerr << "Failed to open rebuild file " << sha1blobs << 
"\n";
+               exit(1);
+           }
+           s1b.close();
+       }
+    }
+
     // Header
     if (c->notes_commit) {
        // Don't output notes commits - we're handling things differently.
@@ -537,9 +556,36 @@
     for (size_t i = 0; i < c->merges.size(); i++) {
        outfile << "merge :" << c->merges[i].mark << "\n";
     }
-    for (size_t i = 0; i < c->fileops.size(); i++) {
-       write_op(outfile, &c->fileops[i]);
+
+    bool write_ops = true;
+    if (c->id.sha1.length()) {
+       if (c->s->rebuild_commits.find(c->id.sha1) != 
c->s->rebuild_commits.end()) {
+           write_ops = false;
+           if (c->s->reset_commits.find(c->id.sha1) != 
c->s->rebuild_commits.end()) {
+               std::cout << "reset commit!\n";
+           }
+           std::string sha1tree = c->id.sha1 + std::string("-tree.fi");
+           std::ifstream s1t(sha1tree, std::ifstream::binary | std::ios::ate);
+           std::streamsize size = s1t.tellg();
+           s1t.seekg(0, std::ios::beg);
+           std::vector<char> buffer(size);
+           if (s1t.read(buffer.data(), size)) {
+               outfile.write(reinterpret_cast<char*>(buffer.data()), size);
+           } else {
+               std::cerr << "Failed to open rebuild file " << sha1tree << "\n";
+               exit(1);
+           }
+           s1t.close();
+       }
+       if (c->s->reset_commits.find(c->id.sha1) != c->s->reset_commits.end()) {
+           std::cout << "TODO - reset commit\n";
+       }
     }
+    if (write_ops) {
+       for (size_t i = 0; i < c->fileops.size(); i++) {
+           write_op(outfile, &c->fileops[i]);
+       }
+    }
     outfile << "\n";
     return 0;
 }

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