)]}'
{
  "log": [
    {
      "commit": "ea1021dbc0f242313159d5dd4801ff29304712fe",
      "tree": "d725be1ed4a9518ea7c2502abdda8f922f756da3",
      "parents": [
        "b7955291595866e2b47cef0d6d5969cb6223c924",
        "d770ef0df7f6c51f5ac6281a69c87dd8445e589b"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Fri Apr 02 18:58:11 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 02 18:58:11 2021"
      },
      "message": "Merge pull request #193 from jpbetz/patch-1\n\nAdd jpbetz as reviewer to OWNERS"
    },
    {
      "commit": "d770ef0df7f6c51f5ac6281a69c87dd8445e589b",
      "tree": "d725be1ed4a9518ea7c2502abdda8f922f756da3",
      "parents": [
        "b7955291595866e2b47cef0d6d5969cb6223c924"
      ],
      "author": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Fri Apr 02 18:54:50 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 02 18:54:50 2021"
      },
      "message": "Add jpbetz as reviewer to OWNERS"
    },
    {
      "commit": "b7955291595866e2b47cef0d6d5969cb6223c924",
      "tree": "a1d530e4a01203b813a7972605ea4b97959cd4b6",
      "parents": [
        "d20b1ce29c5e88b0aaa924b1bcb704641559c378",
        "82b10749974f30b5f55d87749475709cefd471f5"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Fri Apr 02 16:46:12 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 02 16:46:12 2021"
      },
      "message": "Merge pull request #188 from kevindelgado/extract-items-fix\n\nExtract items should only extract the exact paths it is supplied"
    },
    {
      "commit": "82b10749974f30b5f55d87749475709cefd471f5",
      "tree": "a1d530e4a01203b813a7972605ea4b97959cd4b6",
      "parents": [
        "7f39dd4c2ce16e99c4a2031440d80d794ddd62e0"
      ],
      "author": {
        "name": "Kevin Delgado",
        "email": "kevindelgado@google.com",
        "time": "Wed Mar 31 22:40:32 2021"
      },
      "committer": {
        "name": "Kevin Delgado",
        "email": "kevindelgado@google.com",
        "time": "Fri Apr 02 00:45:45 2021"
      },
      "message": "recursive atomicity checking\n"
    },
    {
      "commit": "7f39dd4c2ce16e99c4a2031440d80d794ddd62e0",
      "tree": "f8b96aee26b26907361711cc5c76002ff3cb0447",
      "parents": [
        "9eed6056ca17dcf307499af2a3dfef131dbd38a1"
      ],
      "author": {
        "name": "Kevin Delgado",
        "email": "kevindelgado@google.com",
        "time": "Wed Mar 24 22:46:49 2021"
      },
      "committer": {
        "name": "Kevin Delgado",
        "email": "kevindelgado@google.com",
        "time": "Thu Apr 01 23:34:48 2021"
      },
      "message": "clean up remove_test\n"
    },
    {
      "commit": "9eed6056ca17dcf307499af2a3dfef131dbd38a1",
      "tree": "488f76a0b990d7e51c5031d373e0d772362080a4",
      "parents": [
        "8e688ab03d1e001fe5d557b0aebfb6a9558ddeae"
      ],
      "author": {
        "name": "Kevin Delgado",
        "email": "kevindelgado@google.com",
        "time": "Wed Mar 24 21:59:16 2021"
      },
      "committer": {
        "name": "Kevin Delgado",
        "email": "kevindelgado@google.com",
        "time": "Thu Apr 01 23:34:48 2021"
      },
      "message": "cleanup\n"
    },
    {
      "commit": "8e688ab03d1e001fe5d557b0aebfb6a9558ddeae",
      "tree": "79d7bcc02bb709f77ddd8e73785d2257647c7cee",
      "parents": [
        "1f3a4916aa78a1bc8a6d413ec7420d6b810e2839"
      ],
      "author": {
        "name": "Kevin Delgado",
        "email": "kevindelgado@google.com",
        "time": "Wed Mar 24 21:44:08 2021"
      },
      "committer": {
        "name": "Kevin Delgado",
        "email": "kevindelgado@google.com",
        "time": "Thu Apr 01 23:34:48 2021"
      },
      "message": "complete empty structure tests\n"
    },
    {
      "commit": "1f3a4916aa78a1bc8a6d413ec7420d6b810e2839",
      "tree": "05a4724505ff87e3064fc744d8eec29ac355da66",
      "parents": [
        "4a676777f1c54e949c8d160c5a2f0a9cc5855c59"
      ],
      "author": {
        "name": "Kevin Delgado",
        "email": "kevindelgado@google.com",
        "time": "Wed Mar 24 21:21:56 2021"
      },
      "committer": {
        "name": "Kevin Delgado",
        "email": "kevindelgado@google.com",
        "time": "Thu Apr 01 23:34:48 2021"
      },
      "message": "generalized retainOnlyListKeys\n"
    },
    {
      "commit": "4a676777f1c54e949c8d160c5a2f0a9cc5855c59",
      "tree": "e9bba1e5c827ef09a6be5f4ab4d713c121db96a6",
      "parents": [
        "96fd9c42a22ce35af2ee294d13f5250b476d9a33"
      ],
      "author": {
        "name": "Kevin Delgado",
        "email": "kevindelgado@google.com",
        "time": "Wed Mar 24 19:19:00 2021"
      },
      "committer": {
        "name": "Kevin Delgado",
        "email": "kevindelgado@google.com",
        "time": "Thu Apr 01 23:34:47 2021"
      },
      "message": "Add atomic testing\n"
    },
    {
      "commit": "96fd9c42a22ce35af2ee294d13f5250b476d9a33",
      "tree": "69ff774a0394ffeaff6042bd48da19bd6eb8d7c3",
      "parents": [
        "454df95f413a385a6d05235015562d25c4d3a62d"
      ],
      "author": {
        "name": "Kevin Delgado",
        "email": "kevindelgado@google.com",
        "time": "Wed Mar 24 18:53:57 2021"
      },
      "committer": {
        "name": "Kevin Delgado",
        "email": "kevindelgado@google.com",
        "time": "Thu Apr 01 23:34:47 2021"
      },
      "message": "atomic working, list hack still in place\n"
    },
    {
      "commit": "454df95f413a385a6d05235015562d25c4d3a62d",
      "tree": "7d8c8c47c8b3676355f3c954e7b45a946cf3cd2a",
      "parents": [
        "d20b1ce29c5e88b0aaa924b1bcb704641559c378"
      ],
      "author": {
        "name": "Kevin Delgado",
        "email": "kevindelgado@google.com",
        "time": "Tue Mar 23 23:32:50 2021"
      },
      "committer": {
        "name": "Kevin Delgado",
        "email": "kevindelgado@google.com",
        "time": "Thu Apr 01 23:34:47 2021"
      },
      "message": "checkpoint working map\n"
    },
    {
      "commit": "d20b1ce29c5e88b0aaa924b1bcb704641559c378",
      "tree": "889145750790483d00fba51f54ca9143a72ed708",
      "parents": [
        "f503776e8028ecfca54ee9cefd43508aa3882009",
        "42780102c3e08d1447a61ea863a590926a7c3c45"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Thu Apr 01 19:59:10 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 01 19:59:10 2021"
      },
      "message": "Merge pull request #192 from kevindelgado/no-atomic-to-granular\n\nUnsupport atomic to granular schema reconciliation"
    },
    {
      "commit": "42780102c3e08d1447a61ea863a590926a7c3c45",
      "tree": "889145750790483d00fba51f54ca9143a72ed708",
      "parents": [
        "f503776e8028ecfca54ee9cefd43508aa3882009"
      ],
      "author": {
        "name": "Kevin Delgado",
        "email": "kevindelgado@google.com",
        "time": "Wed Mar 31 22:56:01 2021"
      },
      "committer": {
        "name": "Kevin Delgado",
        "email": "kevindelgado@google.com",
        "time": "Thu Apr 01 17:35:37 2021"
      },
      "message": "Unsupport atomic to granular\n"
    },
    {
      "commit": "f503776e8028ecfca54ee9cefd43508aa3882009",
      "tree": "e19feae17fe46140f9d99652ad03bd594133330c",
      "parents": [
        "c6e603f78e91dbe936d8217a72a1955c99046f61",
        "14e776dfa5df20a5df4c17a74b2dce018a771c27"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Sat Mar 06 19:03:41 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 06 19:03:41 2021"
      },
      "message": "Merge pull request #187 from apelisse/fix-benchmark\n\nFix benchmark broken by owning empty structs"
    },
    {
      "commit": "14e776dfa5df20a5df4c17a74b2dce018a771c27",
      "tree": "e19feae17fe46140f9d99652ad03bd594133330c",
      "parents": [
        "c6e603f78e91dbe936d8217a72a1955c99046f61"
      ],
      "author": {
        "name": "Antoine Pelisse",
        "email": "apelisse@gmail.com",
        "time": "Sat Mar 06 17:33:52 2021"
      },
      "committer": {
        "name": "Antoine Pelisse",
        "email": "apelisse@gmail.com",
        "time": "Sat Mar 06 17:33:52 2021"
      },
      "message": "Fix benchmark broken by owning empty structs\n\nThis should have been part of f09efb3313b4f4544756a0c89900c4a25787e054\n"
    },
    {
      "commit": "c6e603f78e91dbe936d8217a72a1955c99046f61",
      "tree": "3841b8d3815670c5ca529123748eb8b273c5307a",
      "parents": [
        "a4e00e9840c22df6cc47c60dcf65984228558387",
        "8eee23ce874575440909b0a5f6366ff6a15a0a8d"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Sat Feb 27 03:20:38 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Feb 27 03:20:38 2021"
      },
      "message": "Merge pull request #185 from kevindelgado/extract-items\n\nExpose ExtractItems as the opposite of RemoveItems"
    },
    {
      "commit": "8eee23ce874575440909b0a5f6366ff6a15a0a8d",
      "tree": "3841b8d3815670c5ca529123748eb8b273c5307a",
      "parents": [
        "61b13cd730de9f3ccdb9df53a04448caedce2835"
      ],
      "author": {
        "name": "Kevin Delgado",
        "email": "kevindelgado@google.com",
        "time": "Mon Feb 22 17:45:58 2021"
      },
      "committer": {
        "name": "Kevin Delgado",
        "email": "kevindelgado@google.com",
        "time": "Fri Feb 26 22:11:30 2021"
      },
      "message": "Expose ExtractItems as the opposite of RemoveItems\n\nThis exposes a new method on TypedValue called ExtractItems. Whereas\nRemoveItems takes a fieldpath.Set and returns the typed value with the\nprovided set items removed from it, ExtractItems returns ONLY those\nitems provided by the fieldpath.Set, effectively extracting them from\nthe original TypedValue.\n"
    },
    {
      "commit": "61b13cd730de9f3ccdb9df53a04448caedce2835",
      "tree": "fafc51ccb5172e5376e4b269cf288166d3c7e496",
      "parents": [
        "a4e00e9840c22df6cc47c60dcf65984228558387"
      ],
      "author": {
        "name": "Kevin Delgado",
        "email": "kevindelgado@google.com",
        "time": "Mon Feb 22 17:45:19 2021"
      },
      "committer": {
        "name": "Kevin Delgado",
        "email": "kevindelgado@google.com",
        "time": "Fri Feb 26 22:11:30 2021"
      },
      "message": "Add Leaves method to fieldpath.Set object\n"
    },
    {
      "commit": "a4e00e9840c22df6cc47c60dcf65984228558387",
      "tree": "18df341b8726e2394e354115ddc0cb0e6151ebc2",
      "parents": [
        "9f9c77085dec0d1090a49a4842c868fbb346b0cf",
        "e71bab77ca0cf605b02d4c108605c865922a34ae"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Thu Feb 11 22:25:27 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 11 22:25:27 2021"
      },
      "message": "Merge pull request #184 from apelisse/fix-remove-structures\n\nFix remove structures"
    },
    {
      "commit": "e71bab77ca0cf605b02d4c108605c865922a34ae",
      "tree": "18df341b8726e2394e354115ddc0cb0e6151ebc2",
      "parents": [
        "f09efb3313b4f4544756a0c89900c4a25787e054"
      ],
      "author": {
        "name": "Antoine Pelisse",
        "email": "apelisse@gmail.com",
        "time": "Tue Sep 22 22:11:03 2020"
      },
      "committer": {
        "name": "Antoine Pelisse",
        "email": "apelisse@gmail.com",
        "time": "Thu Feb 11 05:53:50 2021"
      },
      "message": "Show how null is inserted when struct is removed\n"
    },
    {
      "commit": "f09efb3313b4f4544756a0c89900c4a25787e054",
      "tree": "abd3056cfc5ace616ff950e2d534b0211fb42440",
      "parents": [
        "2e74c28d3928bfce8680244025ae9071bcd05e06"
      ],
      "author": {
        "name": "Antoine Pelisse",
        "email": "apelisse@gmail.com",
        "time": "Wed Feb 03 00:19:31 2021"
      },
      "committer": {
        "name": "Antoine Pelisse",
        "email": "apelisse@gmail.com",
        "time": "Thu Feb 11 05:52:24 2021"
      },
      "message": "Fix tests broken by new mechanism\n"
    },
    {
      "commit": "2e74c28d3928bfce8680244025ae9071bcd05e06",
      "tree": "ee4fd7bfc9ef8a2d6afddfbbb2e27b7516f21f97",
      "parents": [
        "29968882abc9df9b275260e60e50dada50721930"
      ],
      "author": {
        "name": "Antoine Pelisse",
        "email": "apelisse@gmail.com",
        "time": "Wed Feb 03 00:21:23 2021"
      },
      "committer": {
        "name": "Antoine Pelisse",
        "email": "apelisse@gmail.com",
        "time": "Thu Feb 11 05:52:24 2021"
      },
      "message": "Use NestedSet to also remove structs owned by no-one\n"
    },
    {
      "commit": "29968882abc9df9b275260e60e50dada50721930",
      "tree": "6d7c2acb9be8f1d24d50f3e193962013fde8c487",
      "parents": [
        "9f9c77085dec0d1090a49a4842c868fbb346b0cf"
      ],
      "author": {
        "name": "Antoine Pelisse",
        "email": "apelisse@gmail.com",
        "time": "Sat Jan 23 00:35:20 2021"
      },
      "committer": {
        "name": "Antoine Pelisse",
        "email": "apelisse@gmail.com",
        "time": "Thu Feb 11 05:52:24 2021"
      },
      "message": "Create NestedSet to populate set branches along with the leaves\n"
    },
    {
      "commit": "9f9c77085dec0d1090a49a4842c868fbb346b0cf",
      "tree": "43596828c839cb41e6d9454d1ab5f00fa4cfc0b4",
      "parents": [
        "509ee3bfbd8e0991681e826953d2ccdd054643f4",
        "076ef8d6588e256b029f50d1ad5af51153b72654"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Tue Nov 24 16:13:02 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 24 16:13:02 2020"
      },
      "message": "Merge pull request #173 from christarazi/fix-panic\n\nFix panic on pointer to embedded struct"
    },
    {
      "commit": "509ee3bfbd8e0991681e826953d2ccdd054643f4",
      "tree": "a70cc3501a0e8da8a4a9cec6939f1def0c627129",
      "parents": [
        "8e408d76c7af79aca3c450ee39328628fc512043",
        "cdf8e5a3356dc3cee9556b231d6645f52f936913"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Fri Nov 13 20:29:06 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 13 20:29:06 2020"
      },
      "message": "Merge pull request #179 from apelisse/default-keys-float-and-int\n\nDefault keys float and int"
    },
    {
      "commit": "cdf8e5a3356dc3cee9556b231d6645f52f936913",
      "tree": "b26170002f1285244b1079659a226e9438103893",
      "parents": [
        "ded43451896507b64bce2978534fc6a534d3042e"
      ],
      "author": {
        "name": "Antoine Pelisse",
        "email": "apelisse@gmail.com",
        "time": "Fri Nov 13 20:15:26 2020"
      },
      "committer": {
        "name": "Antoine Pelisse",
        "email": "apelisse@gmail.com",
        "time": "Fri Nov 13 20:15:26 2020"
      },
      "message": "Test that defaulted merge keys as float work well with int values\n"
    },
    {
      "commit": "076ef8d6588e256b029f50d1ad5af51153b72654",
      "tree": "a2b79ca2cf0b31a73df1edac43fb9f45d96982d5",
      "parents": [
        "e5a286e7f5d8e069f6f99edda9b3cc5b49877b48"
      ],
      "author": {
        "name": "Chris Tarazi",
        "email": "tarazichris@gmail.com",
        "time": "Thu Sep 17 18:32:46 2020"
      },
      "committer": {
        "name": "Chris Tarazi",
        "email": "tarazichris@gmail.com",
        "time": "Thu Oct 29 02:53:35 2020"
      },
      "message": "Fix panic on pointer to embedded struct\n\nThis commit converts an embedded struct into its original type if it is\na pointer.\n\nFixes:\nhttps://github.com/kubernetes-sigs/structured-merge-diff/issues/172\n\nSigned-off-by: Chris Tarazi \u003ctarazichris@gmail.com\u003e\n"
    },
    {
      "commit": "e5a286e7f5d8e069f6f99edda9b3cc5b49877b48",
      "tree": "2e4f86e5c1be4b3ca0ab884edea0db145cb94882",
      "parents": [
        "b84068c04e411b456e0bd1623aab433fac4a2fe0"
      ],
      "author": {
        "name": "Chris Tarazi",
        "email": "tarazichris@gmail.com",
        "time": "Thu Oct 29 02:41:06 2020"
      },
      "committer": {
        "name": "Chris Tarazi",
        "email": "tarazichris@gmail.com",
        "time": "Thu Oct 29 02:41:40 2020"
      },
      "message": "Fix incorrect godoc on GetFrom\n\nSigned-off-by: Chris Tarazi \u003ctarazichris@gmail.com\u003e\n"
    },
    {
      "commit": "8e408d76c7af79aca3c450ee39328628fc512043",
      "tree": "fe2f36d40224e2f372cc7fcdd5950e37693e614c",
      "parents": [
        "b3cf1e8ff931111f28d7c608c45d020fbdbd4ee2",
        "ded43451896507b64bce2978534fc6a534d3042e"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Wed Oct 21 17:02:21 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 17:02:21 2020"
      },
      "message": "Merge pull request #177 from apelisse/defaulted-associative-keys\n\nAllow defaulted keys"
    },
    {
      "commit": "ded43451896507b64bce2978534fc6a534d3042e",
      "tree": "abee0c5b3b92abfe78d6f3c787cd4c0febcf5875",
      "parents": [
        "b84068c04e411b456e0bd1623aab433fac4a2fe0"
      ],
      "author": {
        "name": "jennybuckley",
        "email": "jennybuckley@google.com",
        "time": "Wed May 29 22:14:55 2019"
      },
      "committer": {
        "name": "Antoine Pelisse",
        "email": "apelisse@gmail.com",
        "time": "Mon Oct 19 22:22:07 2020"
      },
      "message": "Allow defaulted keys\n"
    },
    {
      "commit": "b3cf1e8ff931111f28d7c608c45d020fbdbd4ee2",
      "tree": "1a65e741e4340e1986954de380a89ab80e2e21e7",
      "parents": [
        "0ca72c042741d24404f474520fedffcdf6f6fd20",
        "8443f342fd5368931696363c0d16fc11eb14f5d9"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Thu Oct 01 03:32:53 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 03:32:53 2020"
      },
      "message": "Merge pull request #176 from jpbetz/fix-noop-granular-case\n\nFix noop granular case for atomic\u003c-\u003egranular schema changes"
    },
    {
      "commit": "8443f342fd5368931696363c0d16fc11eb14f5d9",
      "tree": "1a65e741e4340e1986954de380a89ab80e2e21e7",
      "parents": [
        "0ca72c042741d24404f474520fedffcdf6f6fd20"
      ],
      "author": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Thu Oct 01 01:55:21 2020"
      },
      "committer": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Thu Oct 01 02:23:07 2020"
      },
      "message": "Fix noop granular case for atomic\u003c-\u003egranular schema changes\n"
    },
    {
      "commit": "0ca72c042741d24404f474520fedffcdf6f6fd20",
      "tree": "2a71b1bcd744740150b844b3606cab3a846b826d",
      "parents": [
        "0bcdf88374e596ea4505e72c2506109bc56bcd7c",
        "a36f3195e52a18d8dc4b56d96448434c0cda3b5f"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Wed Sep 30 18:13:46 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 30 18:13:46 2020"
      },
      "message": "Merge pull request #175 from jpbetz/atomics-ignore-unrecognized\n\nIgnore fieldset paths not in schema when reconciling"
    },
    {
      "commit": "a36f3195e52a18d8dc4b56d96448434c0cda3b5f",
      "tree": "2a71b1bcd744740150b844b3606cab3a846b826d",
      "parents": [
        "0bcdf88374e596ea4505e72c2506109bc56bcd7c"
      ],
      "author": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Wed Sep 30 18:05:05 2020"
      },
      "committer": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Wed Sep 30 18:05:05 2020"
      },
      "message": "Ignore fieldset paths not in schema when reconciling atomic\u003c-\u003egranular schema changes\n"
    },
    {
      "commit": "0bcdf88374e596ea4505e72c2506109bc56bcd7c",
      "tree": "6ab56757734b46f5fbfbfbae8ac606c9ce3591f2",
      "parents": [
        "b84068c04e411b456e0bd1623aab433fac4a2fe0",
        "9a22ec66c022a6acb6fe516a82f2fbb76f3fdfc8"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Tue Sep 29 21:17:25 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 29 21:17:25 2020"
      },
      "message": "Merge pull request #170 from jpbetz/test-atomic-introduction\n\nSupport granular\u003c-\u003eatomic schema changes"
    },
    {
      "commit": "9a22ec66c022a6acb6fe516a82f2fbb76f3fdfc8",
      "tree": "6ab56757734b46f5fbfbfbae8ac606c9ce3591f2",
      "parents": [
        "90b911a03faec6b2e482a2ee3dc4d5517ab804ea"
      ],
      "author": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Tue Sep 29 19:15:37 2020"
      },
      "committer": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Tue Sep 29 19:17:19 2020"
      },
      "message": "Apply feedback\n"
    },
    {
      "commit": "90b911a03faec6b2e482a2ee3dc4d5517ab804ea",
      "tree": "ba0eb24ca02c545274cd167faafab2013b2c2c92",
      "parents": [
        "b84068c04e411b456e0bd1623aab433fac4a2fe0"
      ],
      "author": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Sat Sep 19 04:51:38 2020"
      },
      "committer": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Wed Sep 23 03:07:57 2020"
      },
      "message": "Add atomic\u003c-\u003egranular schema change fixup\n"
    },
    {
      "commit": "b84068c04e411b456e0bd1623aab433fac4a2fe0",
      "tree": "cf7bcbb1c6641ef526be6bd83707fa042cac3690",
      "parents": [
        "6592b875991a24a1bdcc434fc25b6c24afd86d23",
        "3fe1e91debba34b8fec9ebb9d25dd8ccf8d1d829"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Mon Aug 10 22:37:58 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 10 22:37:58 2020"
      },
      "message": "Merge pull request #169 from jpbetz/atomic-map-test\n\nAdd test for multiple appliers with atomic maps"
    },
    {
      "commit": "3fe1e91debba34b8fec9ebb9d25dd8ccf8d1d829",
      "tree": "cf7bcbb1c6641ef526be6bd83707fa042cac3690",
      "parents": [
        "6592b875991a24a1bdcc434fc25b6c24afd86d23"
      ],
      "author": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Mon Aug 10 21:13:35 2020"
      },
      "committer": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Mon Aug 10 21:13:35 2020"
      },
      "message": "Add test for multiple appliers with atomic maps\n"
    },
    {
      "commit": "6592b875991a24a1bdcc434fc25b6c24afd86d23",
      "tree": "058972f33509fed9a02e12095284edeffd2f3e1a",
      "parents": [
        "43c19bbb7fba66396555aeebbec8227d024220ab",
        "d8c62e514d2892a11c69e2b0b392dfe33261ea03"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Thu Aug 06 15:43:43 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 06 15:43:43 2020"
      },
      "message": "Merge pull request #168 from kubernetes-sigs/release-4.0\n\nRelease 4.0"
    },
    {
      "commit": "d8c62e514d2892a11c69e2b0b392dfe33261ea03",
      "tree": "058972f33509fed9a02e12095284edeffd2f3e1a",
      "parents": [
        "43c19bbb7fba66396555aeebbec8227d024220ab",
        "daa3a199edcc48f138daf17ff9ec1ea875f563b8"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Wed Aug 05 20:00:55 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 05 20:00:55 2020"
      },
      "message": "Merge pull request #167 from apelisse/update-gomod-v4\n\nUdpate go mod package to v4"
    },
    {
      "commit": "daa3a199edcc48f138daf17ff9ec1ea875f563b8",
      "tree": "058972f33509fed9a02e12095284edeffd2f3e1a",
      "parents": [
        "43c19bbb7fba66396555aeebbec8227d024220ab"
      ],
      "author": {
        "name": "Antoine Pelisse",
        "email": "apelisse@gmail.com",
        "time": "Wed Aug 05 19:24:42 2020"
      },
      "committer": {
        "name": "Antoine Pelisse",
        "email": "apelisse@gmail.com",
        "time": "Wed Aug 05 19:24:42 2020"
      },
      "message": "Udpate go mod package to v4\n"
    },
    {
      "commit": "43c19bbb7fba66396555aeebbec8227d024220ab",
      "tree": "5ae607fc18412345bd1b8747fb872f464bcc11c6",
      "parents": [
        "068223b26491dad6419fc6712b70a57e0a162ef1",
        "5b08b433f39792c88725fc12c38774bf3e5cd169"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Mon Jul 06 21:33:57 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 06 21:33:57 2020"
      },
      "message": "Merge pull request #166 from jpbetz/remove-unowned-fields\n\nRemove fields that are omitted from applied configurations if there are no other owners"
    },
    {
      "commit": "5b08b433f39792c88725fc12c38774bf3e5cd169",
      "tree": "5ae607fc18412345bd1b8747fb872f464bcc11c6",
      "parents": [
        "9f09075a4014683d312b17d9b25f5c106f9deb8f"
      ],
      "author": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Wed Jul 01 18:31:08 2020"
      },
      "committer": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Wed Jul 01 18:31:08 2020"
      },
      "message": "Add and fix tests to match improved update merging\n"
    },
    {
      "commit": "9f09075a4014683d312b17d9b25f5c106f9deb8f",
      "tree": "679cf3f751979ac67da0d4db71d6bdbfb76a8d8b",
      "parents": [
        "085f5bfe506970c58fe6c1f6666ad985e6c00a82"
      ],
      "author": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Tue Jun 30 21:58:55 2020"
      },
      "committer": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Tue Jun 30 22:30:56 2020"
      },
      "message": "Change merge rules so that updaters to share ownership with appliers\n"
    },
    {
      "commit": "085f5bfe506970c58fe6c1f6666ad985e6c00a82",
      "tree": "e36eb6a6f32a1f3d3bc923f94c7abb9025c4de07",
      "parents": [
        "1ce4a774aa0ca33e3f7f844bb9c690980e769ad7"
      ],
      "author": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Tue Jun 30 17:43:02 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 17:43:02 2020"
      },
      "message": "Apply suggestion\n\nCo-authored-by: Antoine Pelisse \u003capelisse@gmail.com\u003e"
    },
    {
      "commit": "1ce4a774aa0ca33e3f7f844bb9c690980e769ad7",
      "tree": "93cf1ea0f847a42c9464bd93b1eacdb6e11ffdb1",
      "parents": [
        "ca99bda7e3244579244ed18996c1a7b2bbcc117e"
      ],
      "author": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Fri Jun 26 06:37:57 2020"
      },
      "committer": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Fri Jun 26 16:19:01 2020"
      },
      "message": "Add field unsetting tests\n"
    },
    {
      "commit": "ca99bda7e3244579244ed18996c1a7b2bbcc117e",
      "tree": "bebeb306775ec97b092d6bc4eb81e84ce075e681",
      "parents": [
        "068223b26491dad6419fc6712b70a57e0a162ef1"
      ],
      "author": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Mon Jun 22 19:03:49 2020"
      },
      "committer": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Mon Jun 22 19:03:49 2020"
      },
      "message": "Remove fields when unset from applied configuration if there are no other owners\n"
    },
    {
      "commit": "068223b26491dad6419fc6712b70a57e0a162ef1",
      "tree": "5034dfdeee8426ad047c7579af493ffe0f03a97e",
      "parents": [
        "8fff1873b1235c5cdc0561945daf4b505a427073",
        "61e49961e3a147509f2464d6e17a613cc2d636a8"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Thu May 28 16:10:03 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 16:10:03 2020"
      },
      "message": "Merge pull request #165 from nodo/fix-contact-info\n\nLink to wg-api-expression slack and mailing-list"
    },
    {
      "commit": "61e49961e3a147509f2464d6e17a613cc2d636a8",
      "tree": "5034dfdeee8426ad047c7579af493ffe0f03a97e",
      "parents": [
        "8fff1873b1235c5cdc0561945daf4b505a427073"
      ],
      "author": {
        "name": "Andrea Nodari",
        "email": "and.nodari@gmail.com",
        "time": "Thu May 28 15:33:56 2020"
      },
      "committer": {
        "name": "Andrea Nodari",
        "email": "and.nodari@gmail.com",
        "time": "Thu May 28 15:33:56 2020"
      },
      "message": "Link to wg-api-expression slack and mailing-list\n"
    },
    {
      "commit": "8fff1873b1235c5cdc0561945daf4b505a427073",
      "tree": "072b74d3ae3f8a42d733b04a65c78c40e3291232",
      "parents": [
        "621c0354656011e194a15a99b8c3925accc7bb96",
        "02d431a3e322967228e3839e4850650a0f3ebac5"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Wed May 27 16:16:41 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 16:16:41 2020"
      },
      "message": "Merge pull request #161 from kwiesmueller/ignore-fields\n\nAdd ignored fields to update"
    },
    {
      "commit": "02d431a3e322967228e3839e4850650a0f3ebac5",
      "tree": "1e408a68f2039e9f5fb7d118e15cc8bbbbe29f1a",
      "parents": [
        "73b21b9b057d8d47044a1b136cbab48ce077be4c"
      ],
      "author": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Mon May 18 17:32:28 2020"
      },
      "committer": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Mon May 18 17:32:28 2020"
      },
      "message": "update RecursiveDifference comment and extend tests\n"
    },
    {
      "commit": "73b21b9b057d8d47044a1b136cbab48ce077be4c",
      "tree": "178d395dd0cef2f0b4af04c9210ce3848bf5093f",
      "parents": [
        "a8d38712610a59039e7f4856928c4a456bf4732c"
      ],
      "author": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Thu May 14 19:28:13 2020"
      },
      "committer": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Thu May 14 19:28:13 2020"
      },
      "message": "add test\n"
    },
    {
      "commit": "a8d38712610a59039e7f4856928c4a456bf4732c",
      "tree": "63ead3187d7be427a087afad3468b3c2760e8f07",
      "parents": [
        "486ee0612e3de663f50699ca099f0208c925057f"
      ],
      "author": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Thu May 14 19:21:34 2020"
      },
      "committer": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Thu May 14 19:21:34 2020"
      },
      "message": "make ignoredFields part of TestCase\n"
    },
    {
      "commit": "486ee0612e3de663f50699ca099f0208c925057f",
      "tree": "af01b8c5aef9ca779b2b9cfc33a983c44f0f7674",
      "parents": [
        "2c92fd26d9c2dd1ba1ad3d91d10070914a6706e9"
      ],
      "author": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Wed May 13 18:22:46 2020"
      },
      "committer": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Wed May 13 18:22:46 2020"
      },
      "message": "more cleanup\n"
    },
    {
      "commit": "2c92fd26d9c2dd1ba1ad3d91d10070914a6706e9",
      "tree": "0d0e95a390a8e1c6d81e2f0bf605b17f605370d4",
      "parents": [
        "496703aa312906a5101a3f4787fe04a416fd1af3"
      ],
      "author": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Wed May 13 16:36:10 2020"
      },
      "committer": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Wed May 13 16:36:10 2020"
      },
      "message": "switch to versioned ignored fields in updater\n"
    },
    {
      "commit": "496703aa312906a5101a3f4787fe04a416fd1af3",
      "tree": "d0e6a4d612f1ae8f1ac5f4c2212d87e337d2b3b1",
      "parents": [
        "d89132764fa2acfe2af3facbbfacf25e722c047c"
      ],
      "author": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Tue May 12 10:53:58 2020"
      },
      "committer": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Tue May 12 10:53:58 2020"
      },
      "message": "add missing copyright notice\n"
    },
    {
      "commit": "d89132764fa2acfe2af3facbbfacf25e722c047c",
      "tree": "56950acce43f8a17dde46f04f3d45c196835a326",
      "parents": [
        "570c5cb343fd89ba685f2c0e84f51a01945358a2"
      ],
      "author": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Tue May 12 10:50:31 2020"
      },
      "committer": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Tue May 12 10:50:31 2020"
      },
      "message": "add RecursiveDifference to benchmarks\n"
    },
    {
      "commit": "570c5cb343fd89ba685f2c0e84f51a01945358a2",
      "tree": "8a27698ed391dce1bc2c778dbd97f0b4ea6424bf",
      "parents": [
        "9810220206218c514a634b5c60d8e7eb7766ac12"
      ],
      "author": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Tue May 12 10:41:54 2020"
      },
      "committer": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Tue May 12 10:41:54 2020"
      },
      "message": "move RecursiveDifference code to SetNodeMap\n"
    },
    {
      "commit": "9810220206218c514a634b5c60d8e7eb7766ac12",
      "tree": "a5a3876f5f85851b916fedf5e8f3109aca78b2a3",
      "parents": [
        "8a3560e95c3217f9d5ee92866bcb8e18730b8ad8"
      ],
      "author": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Tue May 12 10:37:20 2020"
      },
      "committer": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Tue May 12 10:37:20 2020"
      },
      "message": "cleanup tests\n"
    },
    {
      "commit": "8a3560e95c3217f9d5ee92866bcb8e18730b8ad8",
      "tree": "5f599989d8d920fd426087dc97dbeae83ff8a07f",
      "parents": [
        "85efcfffa57bd91654c7245f52788ad94afe2189"
      ],
      "author": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Tue May 12 10:20:01 2020"
      },
      "committer": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Tue May 12 10:20:01 2020"
      },
      "message": "move compare test cases to set_test.go\n"
    },
    {
      "commit": "85efcfffa57bd91654c7245f52788ad94afe2189",
      "tree": "98694c7c765486658262730d852dc6b7811ccda6",
      "parents": [
        "4b4ef1265cde368c5b77e28a6f8008df0aa33b0e"
      ],
      "author": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Tue May 12 08:37:49 2020"
      },
      "committer": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Tue May 12 08:37:49 2020"
      },
      "message": "rename Remove to ExcludeFields\n"
    },
    {
      "commit": "4b4ef1265cde368c5b77e28a6f8008df0aa33b0e",
      "tree": "395d2e0b40e5646294b5379038f2b61cf45d9583",
      "parents": [
        "eccbede94065f459a38caab2f8cfd3db31ccdaed"
      ],
      "author": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Mon May 11 19:52:01 2020"
      },
      "committer": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Mon May 11 19:52:01 2020"
      },
      "message": "remove unused test code\n"
    },
    {
      "commit": "eccbede94065f459a38caab2f8cfd3db31ccdaed",
      "tree": "9221d81dca0ae0b3deb88efbe5d1e3fd0deb9278",
      "parents": [
        "fd0df01982c4ef571c5d74a15d61eee85662d67c"
      ],
      "author": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Mon May 11 19:40:52 2020"
      },
      "committer": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Mon May 11 19:45:35 2020"
      },
      "message": "fix update and apply\n"
    },
    {
      "commit": "fd0df01982c4ef571c5d74a15d61eee85662d67c",
      "tree": "f9684dcf93a963f681daf1593f66df3e25ad0712",
      "parents": [
        "c54f8115ec02851dd5c372d6defe52bd2facabbe"
      ],
      "author": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Mon May 11 18:30:19 2020"
      },
      "committer": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Mon May 11 18:38:48 2020"
      },
      "message": "update vendors\n"
    },
    {
      "commit": "c54f8115ec02851dd5c372d6defe52bd2facabbe",
      "tree": "72e8147fd44acfc423875daf38f21a5d492d60a2",
      "parents": [
        "7c8a53d47bdf3005609932b96a0d8cfafe249a0d"
      ],
      "author": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Mon May 11 18:29:10 2020"
      },
      "committer": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Mon May 11 18:38:48 2020"
      },
      "message": "add ignored fields to apply\n"
    },
    {
      "commit": "7c8a53d47bdf3005609932b96a0d8cfafe249a0d",
      "tree": "43cd3e345fa8aa576e466583b58f9d793b8361ea",
      "parents": [
        "d46c0e972a4ceaf289ed16e90f6c57a9579ba27f"
      ],
      "author": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Mon May 11 18:08:14 2020"
      },
      "committer": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Mon May 11 18:38:48 2020"
      },
      "message": "implement set.RecursiveDifference\n"
    },
    {
      "commit": "d46c0e972a4ceaf289ed16e90f6c57a9579ba27f",
      "tree": "a945b58f712364f2f89013057e91e197bde5fde3",
      "parents": [
        "e95fcaac5386a21878a520540d7a6ccac25dd2b9"
      ],
      "author": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Sat May 02 15:18:55 2020"
      },
      "committer": {
        "name": "Kevin Wiesmueller",
        "email": "kwiesmueller@seibert-media.net",
        "time": "Mon May 11 18:38:45 2020"
      },
      "message": "add ignoredFields to update\n"
    },
    {
      "commit": "621c0354656011e194a15a99b8c3925accc7bb96",
      "tree": "0354cc7ab6aaa5d6493ce7a7a1a1493e7d8fa444",
      "parents": [
        "e95fcaac5386a21878a520540d7a6ccac25dd2b9",
        "ef552569f9dcf817596179dac5e0bffc9b245b99"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Thu May 07 20:35:42 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 20:35:42 2020"
      },
      "message": "Merge pull request #162 from julianvmodesto/conflicts-to-set\n\nAdd Conflicts.ToSet()"
    },
    {
      "commit": "ef552569f9dcf817596179dac5e0bffc9b245b99",
      "tree": "0354cc7ab6aaa5d6493ce7a7a1a1493e7d8fa444",
      "parents": [
        "e95fcaac5386a21878a520540d7a6ccac25dd2b9"
      ],
      "author": {
        "name": "Julian V. Modesto",
        "email": "julianvmodesto@gmail.com",
        "time": "Thu May 07 19:50:28 2020"
      },
      "committer": {
        "name": "Julian V. Modesto",
        "email": "julianvmodesto@gmail.com",
        "time": "Thu May 07 20:31:36 2020"
      },
      "message": "Add Conflicts.ToSet()\n"
    },
    {
      "commit": "e95fcaac5386a21878a520540d7a6ccac25dd2b9",
      "tree": "4401bd731e57b8de5b8120f8d78d974e2f70ea40",
      "parents": [
        "877aee05330847a873a1a8998b40e12a1e0fde25",
        "f150478f131e67a09fd93219186b57d7d35a0b75"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Fri Apr 03 15:37:45 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 03 15:37:45 2020"
      },
      "message": "Merge pull request #160 from wawa0210/master\n\n[Trival] replace beta label to GA label for kubernetes"
    },
    {
      "commit": "f150478f131e67a09fd93219186b57d7d35a0b75",
      "tree": "4401bd731e57b8de5b8120f8d78d974e2f70ea40",
      "parents": [
        "877aee05330847a873a1a8998b40e12a1e0fde25"
      ],
      "author": {
        "name": "张潇",
        "email": "xiaozhang0210@hotmail.com",
        "time": "Sat Mar 28 04:38:46 2020"
      },
      "committer": {
        "name": "张潇",
        "email": "xiaozhang0210@hotmail.com",
        "time": "Sat Mar 28 04:52:47 2020"
      },
      "message": "replace beta label to GA label for kubernetes\n"
    },
    {
      "commit": "877aee05330847a873a1a8998b40e12a1e0fde25",
      "tree": "95386a6bea8da7c779e21978ad2832267de2ac86",
      "parents": [
        "333e02466f546c20f00c419296c91d9968da02f8",
        "c840d7e47eef88f3a8d9d7e0742586694d989d47"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Thu Mar 05 20:32:38 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 05 20:32:38 2020"
      },
      "message": "Merge pull request #158 from apelisse/return-nil-on-non-change-apply\n\nmerge: Apply returns nil object if unchanged"
    },
    {
      "commit": "c840d7e47eef88f3a8d9d7e0742586694d989d47",
      "tree": "95386a6bea8da7c779e21978ad2832267de2ac86",
      "parents": [
        "ac8cf59026906633b69f9ebaceef790045171e60"
      ],
      "author": {
        "name": "Antoine Pelisse",
        "email": "apelisse@google.com",
        "time": "Thu Mar 05 19:30:41 2020"
      },
      "committer": {
        "name": "Antoine Pelisse",
        "email": "apelisse@google.com",
        "time": "Thu Mar 05 19:30:41 2020"
      },
      "message": "ManagedFields: Implement Copy method\n"
    },
    {
      "commit": "ac8cf59026906633b69f9ebaceef790045171e60",
      "tree": "8142fcc05670401595f78aca736698584ea67025",
      "parents": [
        "1bd697a120bc2d3b8f8b0dfbb81a378b068ce1d5"
      ],
      "author": {
        "name": "Antoine Pelisse",
        "email": "apelisse@google.com",
        "time": "Thu Mar 05 18:46:30 2020"
      },
      "committer": {
        "name": "Antoine Pelisse",
        "email": "apelisse@google.com",
        "time": "Thu Mar 05 18:46:30 2020"
      },
      "message": "fieldpath.ManagedFields: Add Equals method\n"
    },
    {
      "commit": "1bd697a120bc2d3b8f8b0dfbb81a378b068ce1d5",
      "tree": "5a33812905644f050daccd02198cdee3fd042a87",
      "parents": [
        "333e02466f546c20f00c419296c91d9968da02f8"
      ],
      "author": {
        "name": "Antoine Pelisse",
        "email": "apelisse@google.com",
        "time": "Thu Mar 05 16:58:45 2020"
      },
      "committer": {
        "name": "Antoine Pelisse",
        "email": "apelisse@google.com",
        "time": "Thu Mar 05 16:58:45 2020"
      },
      "message": "merge: Apply returns nil object if unchanged\n\nWe need to know when the apply operation isn\u0027t changing the object, so\nthat we can update the timestamp of the operation. The simplest way to\ndo so it to return nil.\n"
    },
    {
      "commit": "333e02466f546c20f00c419296c91d9968da02f8",
      "tree": "d397af67cf9ee3beb0fa99d7058f53ca6c72dae0",
      "parents": [
        "17912732856ce1817c889fd8a8815083f6e0f826",
        "5e70324e7c1c52ad523082f4a1697a0e8da62e89"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Fri Feb 07 20:13:45 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 07 20:13:45 2020"
      },
      "message": "Merge pull request #156 from jpbetz/mimic-k8s-json-unmarshal\n\nConvert numbers like Kubernetes does for json.Marshaler types"
    },
    {
      "commit": "5e70324e7c1c52ad523082f4a1697a0e8da62e89",
      "tree": "d397af67cf9ee3beb0fa99d7058f53ca6c72dae0",
      "parents": [
        "17912732856ce1817c889fd8a8815083f6e0f826"
      ],
      "author": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Fri Feb 07 08:17:17 2020"
      },
      "committer": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Fri Feb 07 20:02:19 2020"
      },
      "message": "Convert numbers like Kubernetes does for json.Marshaler types\n"
    },
    {
      "commit": "17912732856ce1817c889fd8a8815083f6e0f826",
      "tree": "764558251ef89c52f8b4a64ea30c810944a4fca1",
      "parents": [
        "b8515d020002c982c793cb84846cda556b0a4b51",
        "0e517d5ed46aed40b834e615ce72b5015e071f11"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Thu Feb 06 17:17:27 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 06 17:17:27 2020"
      },
      "message": "Merge pull request #155 from jpbetz/freelist-optimization\n\nUse freelists instead of sync.Pool for value object recycling"
    },
    {
      "commit": "0e517d5ed46aed40b834e615ce72b5015e071f11",
      "tree": "764558251ef89c52f8b4a64ea30c810944a4fca1",
      "parents": [
        "b8515d020002c982c793cb84846cda556b0a4b51"
      ],
      "author": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Wed Feb 05 00:34:09 2020"
      },
      "committer": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Thu Feb 06 06:07:18 2020"
      },
      "message": "Replace pool.Sync with freelists for value objects\n"
    },
    {
      "commit": "b8515d020002c982c793cb84846cda556b0a4b51",
      "tree": "06d623664af1294785301790d1354273537c7005",
      "parents": [
        "9a93042713c00adee56d16ae170a4abc21fbc029",
        "719dc370b00e8228bea318ca8fb23d30be339856"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Thu Feb 06 04:25:34 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 06 04:25:34 2020"
      },
      "message": "Merge pull request #153 from jpbetz/compare-optimizations\n\nOptimize TypedValue.Compare for value reflector"
    },
    {
      "commit": "719dc370b00e8228bea318ca8fb23d30be339856",
      "tree": "06d623664af1294785301790d1354273537c7005",
      "parents": [
        "9a93042713c00adee56d16ae170a4abc21fbc029"
      ],
      "author": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Fri Jan 24 19:15:35 2020"
      },
      "committer": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Thu Feb 06 02:40:40 2020"
      },
      "message": "optimize merge by introducing map.Zip, map.Empty and recycling map value objects\n"
    },
    {
      "commit": "9a93042713c00adee56d16ae170a4abc21fbc029",
      "tree": "f31ee61d6c80d905203e52e25af263b34ffd39cf",
      "parents": [
        "9c71810442d913001b906eda05b55af3d8ca698f",
        "9bc3e6d44f65a5dc08db9dc000f3a81c82f2593d"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Tue Feb 04 23:59:54 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 04 23:59:54 2020"
      },
      "message": "Merge pull request #137 from apelisse/perf/compare-pe\n\nUse Compare when serializing rather than Less"
    },
    {
      "commit": "9c71810442d913001b906eda05b55af3d8ca698f",
      "tree": "eae2eb229980947e37c237f84a141c30da367d60",
      "parents": [
        "e6d94725ebfddb2a2aa2a8e1ee8aeb0fc44797a4",
        "016ce3b99c8b02860636e3bf23001824ae8a45b9"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Thu Jan 30 18:25:47 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 30 18:25:47 2020"
      },
      "message": "Merge pull request #152 from jpbetz/reflect-nopool-with-marshaller\n\nOptimize conversion to unstructured"
    },
    {
      "commit": "e6d94725ebfddb2a2aa2a8e1ee8aeb0fc44797a4",
      "tree": "56ae954305ed66c1debea36c77c93d7a441db409",
      "parents": [
        "5382ed4f56638ce360f4181ed5708704a14ecbfe",
        "0b4769cb8ca97ed0cf137f3249bba7da7fe8c9ee"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Mon Jan 27 19:30:43 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 27 19:30:43 2020"
      },
      "message": "Merge pull request #119 from LilyAndLily/dev\n\nfix golint errors"
    },
    {
      "commit": "016ce3b99c8b02860636e3bf23001824ae8a45b9",
      "tree": "3f175629baf1c265ecb5d54e6d36593b23d0cf67",
      "parents": [
        "5443b5787160fe0bf08aecd09dc59ef6b780fa25"
      ],
      "author": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Fri Jan 24 19:15:35 2020"
      },
      "committer": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Fri Jan 24 20:26:02 2020"
      },
      "message": "optimize reflect cache lookups, optimize kind checks\n"
    },
    {
      "commit": "5443b5787160fe0bf08aecd09dc59ef6b780fa25",
      "tree": "55ca59ed050bc2ea5ea86af4b0e26b6d1b27ca08",
      "parents": [
        "5382ed4f56638ce360f4181ed5708704a14ecbfe"
      ],
      "author": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Wed Jan 15 18:25:18 2020"
      },
      "committer": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Thu Jan 23 19:07:10 2020"
      },
      "message": "Add json marshal conversion cache\n"
    },
    {
      "commit": "5382ed4f56638ce360f4181ed5708704a14ecbfe",
      "tree": "f32c16971e9f30cfb1aa9e068708176134586f4b",
      "parents": [
        "0fb62c1057dd958b2f707c5a01a450db51570187",
        "84dea539df8ca0f82ef7773933c51c3f08640666"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Thu Jan 23 17:14:51 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 23 17:14:51 2020"
      },
      "message": "Merge pull request #151 from jpbetz/avoid-sync-pool\n\nOptimize sync.Pool usage and value.Equals implementations"
    },
    {
      "commit": "84dea539df8ca0f82ef7773933c51c3f08640666",
      "tree": "81951d18f49f245f4dd9a48c706ff79dfd853437",
      "parents": [
        "e9a54b479aee6c3f3a517d30d15511d8edb8f053"
      ],
      "author": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Wed Jan 22 20:25:53 2020"
      },
      "committer": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Wed Jan 22 21:39:11 2020"
      },
      "message": "optimize mapUnstructured.Equals, apply feedback\n"
    },
    {
      "commit": "e9a54b479aee6c3f3a517d30d15511d8edb8f053",
      "tree": "dd26869f416ea6d35e3b4f18ba6acafb059b1953",
      "parents": [
        "e0602660d10c5f9fe0d420bb7a718af8ff2b2b0e"
      ],
      "author": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Fri Jan 17 19:58:48 2020"
      },
      "committer": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Tue Jan 21 23:11:47 2020"
      },
      "message": "Optimize ListEquals and Map.Equals, Add List.Range\n"
    },
    {
      "commit": "0fb62c1057dd958b2f707c5a01a450db51570187",
      "tree": "31ed03254e5fad76ad66a677e1dafb06f5df4d86",
      "parents": [
        "0b0d0c640caecb73ae251ca9507af8833602578c",
        "5bd57703f91b06c03f58aede68fac5761b3e1d5e"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Tue Jan 21 22:56:36 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 21 22:56:36 2020"
      },
      "message": "Merge pull request #145 from jennybuckley/same-order\n\nMake fieldset v1 serialization alphabetical"
    },
    {
      "commit": "0b0d0c640caecb73ae251ca9507af8833602578c",
      "tree": "83b01a77fa1dc78d2ae4a374f271b0c7b743da4e",
      "parents": [
        "67a7b8c618745e7c2217ca9aebfff71216e9a6ce",
        "925b7365e528d77c7c80315f1f68cce4122ccf49"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Tue Jan 21 20:44:35 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 21 20:44:35 2020"
      },
      "message": "Merge pull request #136 from jpbetz/value-reflector\n\nAdd reflector based implementation of value interface"
    },
    {
      "commit": "e0602660d10c5f9fe0d420bb7a718af8ff2b2b0e",
      "tree": "a11bbdaf802460435e8b2d3ced94746c0e8a5347",
      "parents": [
        "925b7365e528d77c7c80315f1f68cce4122ccf49"
      ],
      "author": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Mon Jan 13 20:53:05 2020"
      },
      "committer": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Tue Jan 21 19:29:09 2020"
      },
      "message": "Directly reuse objects objects instead of relying on sync.Pool when looping\n"
    },
    {
      "commit": "925b7365e528d77c7c80315f1f68cce4122ccf49",
      "tree": "ff0ec56d8e21bf309d9e1542659858f39c15882f",
      "parents": [
        "a584cfc7f9a48c87a708dba25676c6080e77769a"
      ],
      "author": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Tue Jan 21 19:19:10 2020"
      },
      "committer": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Tue Jan 21 19:19:10 2020"
      },
      "message": "Apply feedback\n"
    },
    {
      "commit": "a584cfc7f9a48c87a708dba25676c6080e77769a",
      "tree": "25a981d222439775f23e2a1e08a854575241a52e",
      "parents": [
        "321bfd69588134b5c4b9b23fbb9e54a0bb670447"
      ],
      "author": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Thu Jan 16 22:41:46 2020"
      },
      "committer": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Thu Jan 16 22:53:36 2020"
      },
      "message": "Support updates to structs in maps\n"
    },
    {
      "commit": "67a7b8c618745e7c2217ca9aebfff71216e9a6ce",
      "tree": "8b9ee99c31ccb1623b1db16701036637a7827edc",
      "parents": [
        "f1586da6c07847570e88c4d953a2b20038811bfa",
        "e4cf9067950532948653ed1d9d25255db5265ce9"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Thu Jan 16 22:22:32 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 16 22:22:32 2020"
      },
      "message": "Merge pull request #150 from apelisse/fix/re-add-multi-update-test\n\nRe-introduce benchmark test for Updates in different versions"
    },
    {
      "commit": "e4cf9067950532948653ed1d9d25255db5265ce9",
      "tree": "8b9ee99c31ccb1623b1db16701036637a7827edc",
      "parents": [
        "f1586da6c07847570e88c4d953a2b20038811bfa"
      ],
      "author": {
        "name": "Antoine Pelisse",
        "email": "apelisse@google.com",
        "time": "Thu Jan 16 22:12:32 2020"
      },
      "committer": {
        "name": "Antoine Pelisse",
        "email": "apelisse@google.com",
        "time": "Thu Jan 16 22:12:32 2020"
      },
      "message": "Re-introduce benchmark test for Updates in different versions\n"
    },
    {
      "commit": "f1586da6c07847570e88c4d953a2b20038811bfa",
      "tree": "272ae57a3b85c8a0fcd2d0e0fccf76b13b6fa46c",
      "parents": [
        "8e6097e1bb32de63e377b13c5f826b0c52bb7a07",
        "cafcf9a0cd21d403ffa151fb6657b17219f532a8"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Thu Jan 16 21:24:35 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 16 21:24:35 2020"
      },
      "message": "Merge pull request #146 from apelisse/compatibility-tests\n\nAllow tests to specify objects in different versions"
    },
    {
      "commit": "321bfd69588134b5c4b9b23fbb9e54a0bb670447",
      "tree": "f9c2a78b1574fdeb012ebc54932d0543781c6aa3",
      "parents": [
        "a4a07dce52ea9a644340062257ed8a98bf4fd91b"
      ],
      "author": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Thu Jan 16 07:53:46 2020"
      },
      "committer": {
        "name": "Joe Betz",
        "email": "jpbetz@google.com",
        "time": "Thu Jan 16 07:53:46 2020"
      },
      "message": "Apply feedback\n"
    },
    {
      "commit": "8e6097e1bb32de63e377b13c5f826b0c52bb7a07",
      "tree": "756d3c34fd957a9d0901eb3308a5cb0f0ae28eac",
      "parents": [
        "a0edead34102baab356be74febe52ca8758c1d08",
        "8aa2f9f63e4241ad9c44bf280596f28da1c951e4"
      ],
      "author": {
        "name": "Kubernetes Prow Robot",
        "email": "k8s-ci-robot@users.noreply.github.com",
        "time": "Wed Jan 15 20:18:22 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 15 20:18:22 2020"
      },
      "message": "Merge pull request #149 from apelisse/fix/equal-value-undefined-wrong\n\nvalue.Equals should check types in both directions"
    }
  ],
  "next": "a0edead34102baab356be74febe52ca8758c1d08"
}
