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