summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYour Name <[email protected]>2024-01-01 12:00:00 -0600
committerYour Name <[email protected]>2024-01-01 12:00:00 -0600
commitb60279b19aa7cf0c94bc34795735be86a434a91c (patch)
tree8cdbc83491732ee417bcfbf961fd5d22453428d4
parent95fcacfde0f1c01f9ce46d5ec6a239a6e778ec27 (diff)
a better protobuf file to switch to later
-rw-r--r--.gitignore1
-rw-r--r--patchset.Make.go12
-rw-r--r--patchset.proto.new74
3 files changed, 87 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 8e2ad0e..3429a71 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
go.*
*.swp
*.patch
+*.mbox
*.pb.go
diff --git a/patchset.Make.go b/patchset.Make.go
index 675f5cc..5081cb9 100644
--- a/patchset.Make.go
+++ b/patchset.Make.go
@@ -110,7 +110,19 @@ func (pset *Patchset) makePatchSetNew(repo *gitpb.Repo) error {
return err
}
+ // maybe better? maybe worse?
+ // git format-patch -o patches --stdout <commit-range> > my-patch.mbox
+ // git format-patch --stdout -5 > my-patch.mbox # last 5 patches
+ // git am < my-patch.mbox
// git format-patch branch1..branch2
+ // export GIT_COMMITTER_DATE="2024-01-01T12:00:00"
+ // export GIT_AUTHOR_DATE="2024-01-01T12:00:00"
+ // export GIT_COMMITTER_NAME="Your Name"
+ // export GIT_COMMITTER_EMAIL="[email protected]"
+ // export GIT_AUTHOR_NAME="Your Name"
+ // export GIT_AUTHOR_EMAIL="[email protected]"
+ // git am < patch.mbox
+
cmd := []string{"git", "format-patch", "-o", repoDir, startBranch + ".." + endBranch}
r := repo.Run(cmd)
if r.Error != nil {
diff --git a/patchset.proto.new b/patchset.proto.new
new file mode 100644
index 0000000..96c6e39
--- /dev/null
+++ b/patchset.proto.new
@@ -0,0 +1,74 @@
+syntax = "proto3";
+
+package forgepb;
+
+import "google/protobuf/timestamp.proto"; // Import the well-known type for Timestamp
+
+/*
+message Blob {
+ string hunkLine = 1;
+ bytes data = 2;
+}
+
+message File {
+ string filename = 1;
+ string hashLine = 2;
+ repeated Blob Blobs = 3;
+}
+
+message Patch {
+ repeated File Files = 1;
+ string repoNamespace = 2;
+ string gH = 3;
+ string gaI = 4;
+ string gcI = 5;
+}
+*/
+
+// git log -1 --format="%H %aI %cI %an %ae %cn %ce"
+message Patch {
+ string repoNamespace = 1; // the base repo git URL
+ bytes data = 2; // the raw data of the whole patch
+ string gH = 3; // after some deliberation, I think I'll just try variable names
+ string gT = 4;
+ string gP = 5;
+ string gs = 6;
+ string gaI = 7; // that exactly match what git uses.
+ string gan = 8;
+ string gae = 9;
+ string gcI = 10;
+ string gcn = 11;
+ string gce = 12;
+ string gN = 13;
+ string gGG = 14;
+ string gGS = 15;
+ string gGK = 16;
+ string newHash = 17; // new hash
+ string state = 18; // the 'state' of the patch
+}
+
+message Patches { // this is a "PATCH: [1/x]" series
+ string uuid = 1; // `autogenpb:uuid:be926ad9-1111-484c-adf2-d96eeabf3079` // todo: add autogenpb support for this
+ string version = 2; // `autogenpb:version:v0.0.45` // todo: add autogenpb support for this
+ repeated Patch Patches = 3;
+}
+
+message Patchset { // `autogenpb:marshal`
+ Patches patches = 1; //
+ string name = 2; // `autogenpb:sort`
+ string comment = 3; //
+ string gitAuthorName = 4; // `autogenpb:sort`
+ string gitAuthorEmail = 5; //
+ google.protobuf.Timestamp ctime = 6; // create time of the patchset
+ string tmpDir = 7; // temp dir
+ string startBranchName = 8; //
+ string endBranchName = 9; //
+ string startBranchHash = 10; //
+ string endBranchHash = 11; //
+}
+
+message Patchsets { // `autogenpb:marshal`
+ string uuid = 1; // `autogenpb:uuid:be926ad9-f07f-484c-adf2-d96eeabf3079` // todo: add autogenpb support for this
+ string version = 2; // `autogenpb:version:v0.0.45` // todo: add autogenpb support for this
+ repeated Patchset Patchsets = 3;
+}