// 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? } // this is a "PATCH: [1/x]" series message Patches { // `autogenpb:marshal` `autogenpb:gui:Patch` string uuid = 1; // `autogenpb:uuid:2679065e-c81d-4a00-aca4-03c158a834fb` string version = 2; // `autogenpb:version:v2.0.0` repeated Patch Patches = 3; string Error = 5; // when passing these around, if there is an error, store it here } 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; // string state = 12; // the state of the patch string uuid = 13; // `autogenpb:sort` `autogenpb:unique` string hostname = 14; // } message Patchsets { // `autogenpb:marshal` `autogenpb:gui` `autogenpb:nomutex` string uuid = 1; // `autogenpb:uuid:be926ad9-f07f-484c-adf2-d96eeabf3079` string version = 2; // `autogenpb:version:v0.0.45` repeated Patchset Patchsets = 3; }