syntax = "proto3";

package forgepb;

import "google/protobuf/timestamp.proto"; // Import the well-known type for Timestamp

message Patch {
        string filename                         = 1; // `autogenpb:unique` `autogenpb:sort`
        bytes  data                             = 2; //
        string repoPath       		        = 3; // path to the git repo
        string branchName     		        = 4; //
        string branchHash     		        = 5; //
        google.protobuf.Timestamp ctime         = 7; // the git commit timestamp of this patch
        string commitHash     		        = 8; // the git commit hash of this patch
        string startHash         		= 9; // the start commit hash
        repeated string Files                   = 10; // the filenames this patch changes
        string comment                          = 11; // the git commit message (in patch form)
        string repoNamespace                    = 12; // the base repo git URL
        string newHash     		        = 13; // new hash after git am
}

message Patches {			   // `autogenpb:marshal`
	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;    // `autogenpb:unique` `autogenpb:sort`
	string   name           = 2;    // `autogenpb:sort`
	string   comment        = 3;    //
	string   gitAuthorName  = 4;    // `autogenpb:sort`
	string   gitAuthorEmail = 5;    //
        google.protobuf.Timestamp ctime = 6;    // create time of this 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;
}