)]}'
{
  "commit": "511c6a9f9812e6df93fd7709cd0c36b1f97da56b",
  "tree": "6eeb30bc87fcc4a76ccd1d93a1ede5a93f6bb7bc",
  "parents": [
    "8d124d493378e12ace569dbef78e4ea077e159eb"
  ],
  "author": {
    "name": "Antonio Barone",
    "email": "syntonyze@gmail.com",
    "time": "Thu Jan 15 18:18:09 2026 +0100"
  },
  "committer": {
    "name": "Antonio Barone",
    "email": "syntonyze@gmail.com",
    "time": "Thu Jan 22 13:01:43 2026 +0100"
  },
  "message": "Preserve owner approvals for rebase-only file changes\n\nThe owners plugin currently removes approvals guarded by\napproverin:already-approved-by_owners whenever the newest patch set\nmodifies files owned by the approver.\n\nThis also happens when the apparent modifications are caused solely by a\nrebase, where file content shifts due to base movement rather than\nmanual edits by the uploader. In these cases, the owner has already\nreviewed the effective change, yet is forced to re-approve\nunnecessarily.\n\nExtend the already-approved-by_owners predicate so that owned files\nmodified only by rebase operations are treated as unchanged. Rebase-only\ndiff hunks, no longer cause owner approvals to be cleared.\n\nThis preserves owner approvals across rebase-only patch sets while still\nclearing them when genuine content changes are introduced.\n\nBug: Issue 475579558\nChange-Id: Icf649f1bcbc833a92853f0bf5c2c59ae5f245590\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f7ee5b06ce956f01ba3a808a1e67115c6c876100",
      "old_mode": 33188,
      "old_path": "owners/src/main/java/com/googlesource/gerrit/owners/AlreadyApprovedByPredicate.java",
      "new_id": "bf4aedef8f3868cc433f5683fd032fad0b6b81cd",
      "new_mode": 33188,
      "new_path": "owners/src/main/java/com/googlesource/gerrit/owners/AlreadyApprovedByPredicate.java"
    },
    {
      "type": "modify",
      "old_id": "d13e709aae8eb0843b21bab692daca04b8570220",
      "old_mode": 33188,
      "old_path": "owners/src/main/java/com/googlesource/gerrit/owners/restapi/GetFilesOwners.java",
      "new_id": "c395179dd593c6206f98fcd21473b461e947fb30",
      "new_mode": 33188,
      "new_path": "owners/src/main/java/com/googlesource/gerrit/owners/restapi/GetFilesOwners.java"
    },
    {
      "type": "modify",
      "old_id": "de970f10684499013e443966f24b9e2c7468f62d",
      "old_mode": 33188,
      "old_path": "owners/src/main/resources/Documentation/copy-conditions.md",
      "new_id": "b7f617bd41294e31f099807dbcfce5325509ad0d",
      "new_mode": 33188,
      "new_path": "owners/src/main/resources/Documentation/copy-conditions.md"
    },
    {
      "type": "modify",
      "old_id": "73d2d3c73db8b79f8116a99c194096a5a51a3598",
      "old_mode": 33188,
      "old_path": "owners/src/test/java/com/googlesource/gerrit/owners/AlreadyApprovedByCopyConditionIT.java",
      "new_id": "d9aa7c14ab92d4f97ea6b3ecfa9345813568a4a0",
      "new_mode": 33188,
      "new_path": "owners/src/test/java/com/googlesource/gerrit/owners/AlreadyApprovedByCopyConditionIT.java"
    }
  ]
}
