)]}'
{
  "commit": "c5c5302a0d7dd02acaf4e8f37acc84f94b0f25c3",
  "tree": "d7dab500048b816fde38bbaf1ce548fce8d5bbe8",
  "parents": [
    "fb092e2d2be452b23fd421c523eb37f17d466e57"
  ],
  "author": {
    "name": "Edwin Kempin",
    "email": "ekempin@google.com",
    "time": "Thu Nov 26 10:17:42 2020 +0100"
  },
  "committer": {
    "name": "Edwin Kempin",
    "email": "ekempin@google.com",
    "time": "Wed Dec 02 11:48:32 2020 +0100"
  },
  "message": "Support configuring multiple override approvals\n\nWith this change it is now possible to configure multiple approvals that\ncount as override for the code owners submit check. If multiple\napprovals are configured, any of them is sufficient to override the code\nowners submit check.\n\nThe configured override label is already returned to clients from the\nGet Code Owner Branch Config REST endpoint and the Get Code Owner\nProject Config REST endpoint, see the \u0027override_approval\u0027 field in the\nrespective response entity. Currently the \u0027override_approval\u0027 field\ncontains a RequiredApprovalInfo entity, but since we support multiple\noverride labels now we change this to a list of RequiredApprovalInfo\nentities. This is an incompatible change that breaks the frontend. To\navoid a breakage the frontend was adapted in change I3677ab4d4 so that\nit now understands the old and the new response format. We should submit\nthis only once that frontend change has been rolled out.\n\nDuplicate override approvals are filtered out and are not returned to\nthe frontend. As duplicates we consider:\n\n* exact identical override approvals (e.g. \"Owners-Override+1\" and\n  \"Owners-Override+1\")\n* override approvals with the same label name and a higher value (e.g.\n  \"Owners-Override+2\" is not needed if \"Owners-Override+1\" is also set,\n  since \"Owners-Override+1\" covers all \"Owners-Override\" approvals \u003e\u003d 1)\n\nSigned-off-by: Edwin Kempin \u003cekempin@google.com\u003e\nChange-Id: I39e09c27ed4b52f60c460fe1ba1306e7073fe9fa\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e06e1bb73bf4179f8d15122e07f64af713797c1c",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/plugins/codeowners/acceptance/AbstractCodeOwnersTest.java",
      "new_id": "f94431418c5130f4654934ef44edf8ace38b17af",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/plugins/codeowners/acceptance/AbstractCodeOwnersTest.java"
    },
    {
      "type": "modify",
      "old_id": "c0ae04be552db82808c9099e826d3ea673ecf50c",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/plugins/codeowners/api/CodeOwnerBranchConfigInfo.java",
      "new_id": "6fb3fc7c2e81122f7da208139cfb86927e789d55",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/plugins/codeowners/api/CodeOwnerBranchConfigInfo.java"
    },
    {
      "type": "modify",
      "old_id": "f55973924b5c368d9be54f4ec80a7c84aeda2125",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/plugins/codeowners/api/CodeOwnerProjectConfigInfo.java",
      "new_id": "bb9e1dfd06ed524c8692c01f24552268dd54b021",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/plugins/codeowners/api/CodeOwnerProjectConfigInfo.java"
    },
    {
      "type": "modify",
      "old_id": "dafbbbfbf7d564dfda7534758082581383a5b96f",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/plugins/codeowners/backend/CodeOwnerApprovalCheck.java",
      "new_id": "8211b7cf954fe69d874240609341a04440bd73c2",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/plugins/codeowners/backend/CodeOwnerApprovalCheck.java"
    },
    {
      "type": "modify",
      "old_id": "9f088a7569a70f0d85fcd0edbac9e850dcdaed13",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/plugins/codeowners/config/CodeOwnersPluginConfiguration.java",
      "new_id": "a66dc1b5be574cc6f4e9c922842cf56eeb1f570e",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/plugins/codeowners/config/CodeOwnersPluginConfiguration.java"
    },
    {
      "type": "modify",
      "old_id": "65d93e811ddd4776d03c40368ebc1ca4b2a5ad6b",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/plugins/codeowners/restapi/CodeOwnerProjectConfigJson.java",
      "new_id": "e7fcd72c74f333f07b25d50c49985e91dc86dce1",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/plugins/codeowners/restapi/CodeOwnerProjectConfigJson.java"
    },
    {
      "type": "modify",
      "old_id": "27d2b20ade42552a67f95917a3c221259088d04e",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/plugins/codeowners/testing/RequiredApprovalSubject.java",
      "new_id": "68673df6e8a0cb04adf3dc63a5d909fd74eaeecd",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/plugins/codeowners/testing/RequiredApprovalSubject.java"
    },
    {
      "type": "modify",
      "old_id": "daf08e24ec121415f34654f562616560a5e84c9b",
      "old_mode": 33188,
      "old_path": "javatests/com/google/gerrit/plugins/codeowners/acceptance/api/CodeOwnersPluginConfigValidatorIT.java",
      "new_id": "19f9a40fe48714b41f5601483ba3d36bf86197ff",
      "new_mode": 33188,
      "new_path": "javatests/com/google/gerrit/plugins/codeowners/acceptance/api/CodeOwnersPluginConfigValidatorIT.java"
    },
    {
      "type": "modify",
      "old_id": "37d0d23a0b19e596143fd55230ed012ce7b8871b",
      "old_mode": 33188,
      "old_path": "javatests/com/google/gerrit/plugins/codeowners/acceptance/api/GetCodeOwnerBranchConfigIT.java",
      "new_id": "66edb8967e486ec2dfb62c6f13a6ba617ebd3e62",
      "new_mode": 33188,
      "new_path": "javatests/com/google/gerrit/plugins/codeowners/acceptance/api/GetCodeOwnerBranchConfigIT.java"
    },
    {
      "type": "modify",
      "old_id": "e936dda68a2cdda5129fb4a5d4a34c85d7544837",
      "old_mode": 33188,
      "old_path": "javatests/com/google/gerrit/plugins/codeowners/acceptance/api/GetCodeOwnerProjectConfigIT.java",
      "new_id": "de208e936d62f963201847a2cdb5a3d2b05df173",
      "new_mode": 33188,
      "new_path": "javatests/com/google/gerrit/plugins/codeowners/acceptance/api/GetCodeOwnerProjectConfigIT.java"
    },
    {
      "type": "modify",
      "old_id": "da58fcad34787df9c6ee3a1592d4dc8a6aaefeb4",
      "old_mode": 33188,
      "old_path": "javatests/com/google/gerrit/plugins/codeowners/backend/CodeOwnerApprovalCheckTest.java",
      "new_id": "12bd0f2305923bd5ab5d73707df73064c9547a54",
      "new_mode": 33188,
      "new_path": "javatests/com/google/gerrit/plugins/codeowners/backend/CodeOwnerApprovalCheckTest.java"
    },
    {
      "type": "modify",
      "old_id": "dab2b0d89dbbacbac6f0d35cf9fd0c178b900432",
      "old_mode": 33188,
      "old_path": "javatests/com/google/gerrit/plugins/codeowners/config/CodeOwnersPluginConfigurationTest.java",
      "new_id": "832e4913e2a524324dcafc08b18b1b7327338c6b",
      "new_mode": 33188,
      "new_path": "javatests/com/google/gerrit/plugins/codeowners/config/CodeOwnersPluginConfigurationTest.java"
    },
    {
      "type": "modify",
      "old_id": "30f84547af96c2bda91eaa13bc1427589dc6d0cf",
      "old_mode": 33188,
      "old_path": "javatests/com/google/gerrit/plugins/codeowners/restapi/CodeOwnerProjectConfigJsonTest.java",
      "new_id": "45d957a557c9389cbea32d6f9986837cc2140287",
      "new_mode": 33188,
      "new_path": "javatests/com/google/gerrit/plugins/codeowners/restapi/CodeOwnerProjectConfigJsonTest.java"
    },
    {
      "type": "modify",
      "old_id": "b67693b5d00fa78a008e3cc2712a422c2cb3a173",
      "old_mode": 33188,
      "old_path": "resources/Documentation/config.md",
      "new_id": "c7258e09ab6aeb0c26d5f7026fb8c2cd2d8d5680",
      "new_mode": 33188,
      "new_path": "resources/Documentation/config.md"
    },
    {
      "type": "modify",
      "old_id": "3fd9f848dbaad85ea1c3c67b2738116119302e73",
      "old_mode": 33188,
      "old_path": "resources/Documentation/rest-api.md",
      "new_id": "b79b178d69b75f4ad74b07714654cf2f68252543",
      "new_mode": 33188,
      "new_path": "resources/Documentation/rest-api.md"
    }
  ]
}
