)]}'
{
  "commit": "b987b68407f4c8465bea019c8c2f586281013bdf",
  "tree": "2eb5302d45a1e2ed35efbd48411b0a9946b2dc50",
  "parents": [
    "aeb7b7fa5537d8f0981d3e73b93b7479186e8137"
  ],
  "author": {
    "name": "stavarachi",
    "email": "stavarachi@google.com",
    "time": "Fri Oct 30 16:24:05 2026 +0000"
  },
  "committer": {
    "name": "stavarachi",
    "email": "stavarachi@google.com",
    "time": "Fri Nov 06 21:55:33 2026 +0000"
  },
  "message": "Defer branch visibility checks and reuse CodeOwnerResolver\n\nIn AbstractGetCodeOwnersForPath, filterCodeOwners previously checked\nRefPermission.READ (isVisibleTo) on all candidate code owners across\nthe entire OWNERS hierarchy before scoring, sorting, and limiting the\nresults. Additionally, codeOwnerResolver.get() was called for each\nvisited OWNERS file, discarding the per-instance TransientCodeOwnerCache\nbetween hierarchy levels.\n\nMove getVisibleCodeOwners into sortAndLimit so branch visibility is\nevaluated lazily on the score-sorted stream only until the requested\nlimit is reached, and reuse a single CodeOwnerResolver instance across\nthe hierarchy traversal and global code owner resolution.\n\nTesting \u0026 Benchmark Results (https://paste.googleplex.com/6755399436516647)\n\nBug: Google b/360136905\nChange-Id: I7cefffe9e66b16bdd0de308eec1d42b4e4b2d215\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9c293db58ec701e8f95b9228d9dcde829eb67718",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/plugins/codeowners/restapi/AbstractGetCodeOwnersForPath.java",
      "new_id": "1ef672b574c7a1f9fa5f840323446363c3e732c8",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/plugins/codeowners/restapi/AbstractGetCodeOwnersForPath.java"
    },
    {
      "type": "modify",
      "old_id": "2ee456d0a78a2eccfa76b0e73b86e104194794d7",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/plugins/codeowners/restapi/GetCodeOwnersForPathInChange.java",
      "new_id": "00862bd22a517def5fbf491540bea80bb1278684",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/plugins/codeowners/restapi/GetCodeOwnersForPathInChange.java"
    },
    {
      "type": "modify",
      "old_id": "18363d15be810ff281afcc5ffc815160beb34734",
      "old_mode": 33188,
      "old_path": "javatests/com/google/gerrit/plugins/codeowners/acceptance/api/GetCodeOwnersForPathInChangeIT.java",
      "new_id": "756053bb4acb1a62538970c7027ebeaeac2fa6d9",
      "new_mode": 33188,
      "new_path": "javatests/com/google/gerrit/plugins/codeowners/acceptance/api/GetCodeOwnersForPathInChangeIT.java"
    }
  ]
}
