// 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 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 string filename = 19; // `autogenpb:unique` `autogenpb:sort` string startHash = 20; // the start commit hash string commitHash = 21; // the git commit hash of this patch 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? } message Patches { // this is a "PATCH: [1/x]" series `autogenpb:gui:Patch` string uuid = 1; // `autogenpb:uuid:be926ad9-1111-484c-adf2-d96eeabf3079` string version = 2; // `autogenpb:version:v0.0.45` 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; // string state = 12; // the state of the patch string uuid = 13; // identify each patchset somehow } message Patchsets { // `autogenpb:marshal` `autogenpb:gui` string uuid = 1; // `autogenpb:uuid:be926ad9-f07f-484c-adf2-d96eeabf3079` string version = 2; // `autogenpb:version:v0.0.45` repeated Patchset Patchsets = 3; }