Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
There's some very fishy-smelling logic in here, but this commit is trying to be as focused as possible. The *.pb.go diffs are the "name" encoded in the descriptor. The descriptor blobs can be decoded by this program (thanks StackOverflow!): ``` package main import ( "bytes" "compress/gzip" "encoding/json" "fmt" "os" "io/ioutil" proto "github.com/golang/protobuf/proto" dpb "github.com/golang/protobuf/protoc-gen-go/descriptor" ) func main() { m := map[string][]byte{ "before": blobv1, "after": blobv2, } arg := os.Args[1] dump(m[arg]) } func dump(bytes []byte) { fd, err := decodeFileDesc(bytes) if err != nil { panic(err) } b, err := json.MarshalIndent(fd, "", " ") if err != nil { panic(err) } fmt.Println(string(b)) } // decompress does gzip decompression. func decompress(b []byte) ([]byte, error) { r, err := gzip.NewReader(bytes.NewReader(b)) if err != nil { return nil, fmt.Errorf("bad gzipped descriptor: %v", err) } out, err := ioutil.ReadAll(r) if err != nil { return nil, fmt.Errorf("bad gzipped descriptor: %v", err) } return out, nil } func decodeFileDesc(enc []byte) (*dpb.FileDescriptorProto, error) { raw, err := decompress(enc) if err != nil { return nil, fmt.Errorf("failed to decompress enc: %v", err) } fd := new(dpb.FileDescriptorProto) if err := proto.Unmarshal(raw, fd); err != nil { return nil, fmt.Errorf("bad descriptor: %v", err) } return fd, nil } var blobv1 = []byte{ // insert proto "before" blob here } var blobv2 = []byte{ // insert proto "after" blob here } ``` Running this with "before" and "after" args, and diffing the output yields something like: ```diff --- /tmp/a 2023-12-23 23:57:04.748090836 -0800 +++ /tmp/b 2023-12-23 23:57:11.000040973 -0800 @@ -1,5 +1,5 @@ { - "name": "k8s.io/kubernetes/vendor/k8s.io/api/admission/v1/generated.proto", + "name": "k8s.io/api/admission/v1/generated.proto", "package": "k8s.io.api.admission.v1", "dependency": [ "github.com/gogo/protobuf/gogoproto/gogo.proto", ``` Kubernetes-commit: b0a70dec4ab4cb9f972cf39a81ca5e5555417227
- Loading branch information