)]}'
{
  "commit": "d1223578bef4d5c0fca1c7c87b6eae1e8756195c",
  "tree": "7343ba5caed6517c4c89126f15e2888b7bef13c5",
  "parents": [
    "cc4c6c1b9b97e0d44f43e1f5de3093adb54694d0"
  ],
  "author": {
    "name": "Nitzan Gur-Furman",
    "email": "nitzan@google.com",
    "time": "Mon Jan 16 12:07:46 2023 +0000"
  },
  "committer": {
    "name": "Nitzan Gur-Furman",
    "email": "nitzan@google.com",
    "time": "Wed Jan 18 07:41:24 2023 +0000"
  },
  "message": "Revert \"Revert \"Add project permission for removing votes/labels.\"\"\n\nThis reverts commit 7b91e4e06fd1ff5bdfcebb4561fcee32cf48caf2.\n\nReason for revert: Re-adding the feature with the needed fixes.\n\nIssues with the original change:\n\n1. The added dependency on ChangeData::notes() while checking for\n permissions broke the query flow.\n2. For backward compatibility, removing label should be allowed with\neither remove-reviewer or remove-vote permissions.\n3. ChangeInfoDiffer.getAddedForMap failed when the old map was null.\n\nBug: Google b/245706858\nBug: Google b/265447204\nChange-Id: I5c74804d1dbb51cf6d97de653e47654acd2bf263\nForward-Compatible: checked\nRelease-Notes: New project permission for removing votes/labels\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f2f5a66b7440d61e3278799d9b2d8cd32a54aefa",
      "old_mode": 33188,
      "old_path": "Documentation/access-control.txt",
      "new_id": "9a40b27e1d9fb658b0a1ccd3382613d33ccfd98a",
      "new_mode": 33188,
      "new_path": "Documentation/access-control.txt"
    },
    {
      "type": "modify",
      "old_id": "359361c4dc92693a55d55c84a563fb1dae63d4f0",
      "old_mode": 33188,
      "old_path": "Documentation/rest-api-changes.txt",
      "new_id": "2f144c68d094574d6b4cd09f8cf308b521eefc6d",
      "new_mode": 33188,
      "new_path": "Documentation/rest-api-changes.txt"
    },
    {
      "type": "modify",
      "old_id": "5b4a9e5136725aca2e2fa1689f9601c6174f054e",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/acceptance/AbstractDaemonTest.java",
      "new_id": "ccf74d117fe9f5486516115090e04b9f87862c8a",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/acceptance/AbstractDaemonTest.java"
    },
    {
      "type": "modify",
      "old_id": "b1cd506160c686e4b008d3147ad2b5f002cea678",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/acceptance/testsuite/project/ProjectOperationsImpl.java",
      "new_id": "69139ceb747f1d2f0e3b707ad57bbe9697a8161a",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/acceptance/testsuite/project/ProjectOperationsImpl.java"
    },
    {
      "type": "modify",
      "old_id": "9a9a21a3d50b0388e727fd9273119b1946a6a17c",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/acceptance/testsuite/project/TestProjectUpdate.java",
      "new_id": "5634c780ba9693b994d1af761dfce0a56bc0eb0c",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/acceptance/testsuite/project/TestProjectUpdate.java"
    },
    {
      "type": "modify",
      "old_id": "6d2fa321f4da2d6c471e3d1484805f993d7ca189",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/entities/Permission.java",
      "new_id": "d029fad46e4788afe4a82b970745cc20a4dfa1ff",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/entities/Permission.java"
    },
    {
      "type": "modify",
      "old_id": "40ae2eca818c24114993da2976cdcfbcf17edc9a",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/extensions/common/ChangeInfo.java",
      "new_id": "a865187014dab724997b9adde382c6afc3a4f9be",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/extensions/common/ChangeInfo.java"
    },
    {
      "type": "modify",
      "old_id": "24182cc431ee51d0a137ebf29f785f5ee34f0e0f",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/extensions/common/ChangeInfoDiffer.java",
      "new_id": "51c35dce710d60c5bfceaf9003cab4e4522b2cfd",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/extensions/common/ChangeInfoDiffer.java"
    },
    {
      "type": "modify",
      "old_id": "500bb776c13adc113c1d2bcf905325a6dcd26ace",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/change/ChangeJson.java",
      "new_id": "912d20230d75a7b90d44146ad9bc013f8fdf405e",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/change/ChangeJson.java"
    },
    {
      "type": "modify",
      "old_id": "cfa15ae9099298df8a77a36d1e7768753c1ae3b2",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/change/LabelsJson.java",
      "new_id": "5555ba6b1c9862d0d279e89c4788421706e18913",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/change/LabelsJson.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "622f0cf6249fda41682b25e46bcfb40c6a691a5a",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/permissions/AbstractLabelPermission.java"
    },
    {
      "type": "modify",
      "old_id": "8d432c8f70b7f65674c038f50e246e7c50d24c7c",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/permissions/ChangeControl.java",
      "new_id": "6f7d761006cd6b0d52cb744dcb4a9d4f86c8e88c",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/permissions/ChangeControl.java"
    },
    {
      "type": "modify",
      "old_id": "2824efd57b82aec5ab26fa7871c65a2cb5048da4",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/permissions/ChangePermissionOrLabel.java",
      "new_id": "f59ba0240fdf39b348c34c987a4b9f04d847a655",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/permissions/ChangePermissionOrLabel.java"
    },
    {
      "type": "modify",
      "old_id": "9d69d9bad6a84804c2d681fd0c15ecded7ae197d",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/permissions/DefaultPermissionMappings.java",
      "new_id": "89f049309f4923f3f180cd412708afe4ba1efbf6",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/permissions/DefaultPermissionMappings.java"
    },
    {
      "type": "modify",
      "old_id": "c266caa437c09038b79f8f41c6a18b06070f677e",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/permissions/LabelPermission.java",
      "new_id": "4652364dfb4524694fbdd5d64055540a4f3cf274",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/permissions/LabelPermission.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2553601953005c23b56b8ce71d3fcebaa122f8cf",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/permissions/LabelRemovalPermission.java"
    },
    {
      "type": "modify",
      "old_id": "fea282766463f5ca4ea403ca6149e30fb7090193",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/permissions/PermissionBackend.java",
      "new_id": "eb5e053dc6e54d66b94214d156767c7b3871145e",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/permissions/PermissionBackend.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3f3f88ab0fcb780196718cd566f3ca2e74d5a18a",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/project/DeleteVoteControl.java"
    },
    {
      "type": "modify",
      "old_id": "1bc309c71585b9fde5aba7d70bdc80c3d4f71087",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/project/RemoveReviewerControl.java",
      "new_id": "3fda87a1d90da578390230342ed3e767e684c8d3",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/project/RemoveReviewerControl.java"
    },
    {
      "type": "modify",
      "old_id": "a0fc121a0e9311a9fec87d87ef0b9165246ebc02",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/restapi/change/DeleteVoteOp.java",
      "new_id": "0e1a21805395e9bb113429126b4089cc1de4d51f",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/restapi/change/DeleteVoteOp.java"
    },
    {
      "type": "modify",
      "old_id": "259e71dac895f4fbaa1928b514cb3368d5576e2a",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/restapi/change/PostReview.java",
      "new_id": "22eb32c1fbfb7dbf7cf9147c6a0d80f57b723a2a",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/restapi/change/PostReview.java"
    },
    {
      "type": "modify",
      "old_id": "211baeb7a8c14226b640d07ab47f5835e21ad2a6",
      "old_mode": 33188,
      "old_path": "javatests/com/google/gerrit/acceptance/api/change/ChangeIT.java",
      "new_id": "215d1e8c327769ddc93c317293bbc6fd002a8195",
      "new_mode": 33188,
      "new_path": "javatests/com/google/gerrit/acceptance/api/change/ChangeIT.java"
    },
    {
      "type": "modify",
      "old_id": "c57d285fc642bc39757f3e1592b0a6317035f550",
      "old_mode": 33188,
      "old_path": "javatests/com/google/gerrit/acceptance/rest/change/DeleteVoteIT.java",
      "new_id": "016b1e67f7afc5929ad557f66dc01b63cc5627d2",
      "new_mode": 33188,
      "new_path": "javatests/com/google/gerrit/acceptance/rest/change/DeleteVoteIT.java"
    },
    {
      "type": "modify",
      "old_id": "c1a7627e42f5eb9305b64fa2482feb7639ecb604",
      "old_mode": 33188,
      "old_path": "javatests/com/google/gerrit/acceptance/testsuite/project/ProjectOperationsImplTest.java",
      "new_id": "661802e13156d4ccf2a9acf175071018c3dc4aab",
      "new_mode": 33188,
      "new_path": "javatests/com/google/gerrit/acceptance/testsuite/project/ProjectOperationsImplTest.java"
    },
    {
      "type": "modify",
      "old_id": "317567194282acc0221d0a4537ec7290fdfe6c7b",
      "old_mode": 33188,
      "old_path": "javatests/com/google/gerrit/entities/PermissionTest.java",
      "new_id": "d25d8337a5e60009865ec9c91622d811e793eae1",
      "new_mode": 33188,
      "new_path": "javatests/com/google/gerrit/entities/PermissionTest.java"
    },
    {
      "type": "modify",
      "old_id": "7ed236af6962f4df805793f94daea4b1cf27a32b",
      "old_mode": 33188,
      "old_path": "javatests/com/google/gerrit/extensions/common/ChangeInfoDifferTest.java",
      "new_id": "f45d33b673e8ef2f57bdad71d75d6d9b5dec7168",
      "new_mode": 33188,
      "new_path": "javatests/com/google/gerrit/extensions/common/ChangeInfoDifferTest.java"
    }
  ]
}
