summaryrefslogtreecommitdiff
path: root/patch.proto
diff options
context:
space:
mode:
Diffstat (limited to 'patch.proto')
-rw-r--r--patch.proto69
1 files changed, 69 insertions, 0 deletions
diff --git a/patch.proto b/patch.proto
new file mode 100644
index 0000000..42c0ef3
--- /dev/null
+++ b/patch.proto
@@ -0,0 +1,69 @@
+// Copyright 2025 WIT.COM Inc Licensed GPL 3.0
+
+syntax = "proto3";
+
+package forgepb;
+
+import "google/protobuf/timestamp.proto"; // Import the well-known type for Timestamp
+
+// Forge doesn't need this kind of specificity
+// but this is what the patch files contain and how git sees them
+// 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 namespace = 1; // the base repo git namespace
+ bytes data = 2; // the raw data of the whole patch
+ string gH = 3; // Commit Hash (%H)
+ string gT = 4; // Tree Hash (%T)
+ string gP = 5; // Parent Hashes (%P)
+ string gs = 6; // Subject (%s)
+ string gaI = 7; // Author Date, ISO 8601 format (%aI)
+ string gan = 8; // Author Name (%an)
+ string gae = 9; // Author Email (%ae)
+ string gcI = 10; // Committer Date, ISO 8601 format (%cI)
+ string gcn = 11; // Committer Name (%cn)
+ string gce = 12; // Committer Email (%ce)
+ string gN = 13; // Commit Notes (%N)
+ string gGG = 14; // GPG Signature, raw (%GG)
+ string gGS = 15; // GPG Signer Name (%GS)
+ string gGK = 16; // GPG Key ID (%GK)
+ string newHash = 17; // new hash
+ string state = 18; // the 'state' of the patch
+ string filename = 19; // `autogenpb:unique` `autogenpb:sort`
+ string startHash = 20; // the start commit hash
+ string commitHash = 21; // the git commit hash of this patch `autogenpb:sort` `autogenpb:unique`
+ string comment = 22; // the git commit message (in patch form)
+ repeated string Files = 23; // the filenames this patch changes
+ google.protobuf.Timestamp ctime = 24; // create time of the patch
+ bool applied = 25; // have you applied this patch?
+ bool upstream = 26; // has this patch been applied upstream?
+ string patchId = 27; // patchId
+ string treeHash = 28; // final tree Hash
+}
+
+// this is a "PATCH: [1/x]" series
+message Patches { // `autogenpb:marshal` `autogenpb:gui:Patch` `autogenpb:http autogenpb:var:Patches`
+ string uuid = 1; // `autogenpb:uuid:2679065e-c81d-4a00-aca4-03c158a834fb`
+ string version = 2; // `autogenpb:version:v2.0.0`
+ repeated Patch patches = 3;
+ string Error = 4; // when passing these around, if there is an error, store it here
+}