)]}'
{
  "log": [
    {
      "commit": "df7c8e4fad2b9a92d511d54250b06cfe34e8effb",
      "tree": "7068cd1e73bfa5d0f8f226c932b2ea950b6043d2",
      "parents": [
        "e2e15c99909b11cccad4831422f210e19cd69a4b",
        "8cc5ce470bc9ce5fee8fc7e46a62436577e4e2eb"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 25 21:36:59 2026 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 25 21:36:59 2026 +0000"
      },
      "message": "Merge branch \u0027stable-3.14\u0027\n\n* stable-3.14:\n  Add ESLint configuration\n  Adapt prolog-runtime dependency to rules_jvm_external\n  Allow matchers to override auto-owners-approved\n  Refactor tests in copy-condition IT\n  Remove unneeded @Nullable on rootEntry in PathOwners\n  Avoid nullable PathOwnersEntry associated with projects\n  Add AlreadyApprovedByCopyConditionsIT hierarchy OWNERS test cases\n  Add auto-owners-approved to OWNERS\n  Make fields PathOwners field final\n  Ignore commit message diffs in already-approved-by_owners\n  Replace use of static EMPTY ReadOnlyPathOwnersEntry with Optional\u003c\u003e\n  Avoid passing rootEntry to calculateCurrentEntry()\n  Fix import of com.google.common.collect.Sets\n  Remove definition of owners-common as a plugin\n  Open JDK internals for PowerMock in owners-common tests\n  Disambiguate Truth assertions in owners-common tests\n  Reformat with GJF 1.24\n\nChange-Id: I19ce5ba0649caf19b2531499db4dc4ec698957a1\n"
    },
    {
      "commit": "8cc5ce470bc9ce5fee8fc7e46a62436577e4e2eb",
      "tree": "7068cd1e73bfa5d0f8f226c932b2ea950b6043d2",
      "parents": [
        "8df6b62a8fe639081808d52ccdd5ea47baae7c4d"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 25 21:10:18 2026 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 25 21:10:18 2026 +0000"
      },
      "message": "Add ESLint configuration\n\nChange-Id: Ib63002e08006dd8b5b99bdf9d237b73b179f42b7\n"
    },
    {
      "commit": "8df6b62a8fe639081808d52ccdd5ea47baae7c4d",
      "tree": "1f5b7a702c1daedec1e01384bc00a3b23b7a23c6",
      "parents": [
        "0ee3dbc990e84c1421ae028d03d530c162184a96"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 25 15:47:29 2026 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 25 14:00:32 2026 -0700"
      },
      "message": "Adapt prolog-runtime dependency to rules_jvm_external\n\nGerrit does not include the prolog runtime externally\ntherefore it needs to be explicitly included as external dep with\na neverlink directive.\n\nChange-Id: Ia677d551a3259d3cf51291bebc469afd4526cb67\n"
    },
    {
      "commit": "0ee3dbc990e84c1421ae028d03d530c162184a96",
      "tree": "24787b6bb5a8db5d7226f9ed7de5e5d1be7e7d33",
      "parents": [
        "e2e15c99909b11cccad4831422f210e19cd69a4b",
        "5441e227330d0f379a24ae39129f01a5e5375153"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 25 20:58:38 2026 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 25 20:58:38 2026 +0000"
      },
      "message": "Merge branch \u0027stable-3.13\u0027 into stable-3.14\n\n* stable-3.13:\n  Allow matchers to override auto-owners-approved\n  Refactor tests in copy-condition IT\n  Remove unneeded @Nullable on rootEntry in PathOwners\n  Avoid nullable PathOwnersEntry associated with projects\n  Add AlreadyApprovedByCopyConditionsIT hierarchy OWNERS test cases\n  Add auto-owners-approved to OWNERS\n  Make fields PathOwners field final\n  Ignore commit message diffs in already-approved-by_owners\n  Replace use of static EMPTY ReadOnlyPathOwnersEntry with Optional\u003c\u003e\n  Avoid passing rootEntry to calculateCurrentEntry()\n  Fix import of com.google.common.collect.Sets\n  Remove definition of owners-common as a plugin\n  Open JDK internals for PowerMock in owners-common tests\n  Disambiguate Truth assertions in owners-common tests\n  Reformat with GJF 1.24\n\nChange-Id: Id00b1831049719a3bdd3e24b629ed2c7d6778b96\n"
    },
    {
      "commit": "5441e227330d0f379a24ae39129f01a5e5375153",
      "tree": "24787b6bb5a8db5d7226f9ed7de5e5d1be7e7d33",
      "parents": [
        "e2e15c99909b11cccad4831422f210e19cd69a4b",
        "b347a794a5ca4c51a563a559b08c5911df82e18b"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 25 20:32:26 2026 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 25 20:57:33 2026 +0000"
      },
      "message": "Merge branch \u0027stable-3.12\u0027 into stable-3.13\n\n* stable-3.12:\n  Allow matchers to override auto-owners-approved\n  Refactor tests in copy-condition IT\n  Remove unneeded @Nullable on rootEntry in PathOwners\n  Avoid nullable PathOwnersEntry associated with projects\n  Add AlreadyApprovedByCopyConditionsIT hierarchy OWNERS test cases\n  Add auto-owners-approved to OWNERS\n  Make fields PathOwners field final\n  Ignore commit message diffs in already-approved-by_owners\n  Replace use of static EMPTY ReadOnlyPathOwnersEntry with Optional\u003c\u003e\n  Avoid passing rootEntry to calculateCurrentEntry()\n  Fix import of com.google.common.collect.Sets\n  Remove definition of owners-common as a plugin\n  Open JDK internals for PowerMock in owners-common tests\n  Disambiguate Truth assertions in owners-common tests\n  Reformat with GJF 1.24\n\nChange-Id: I5d7b4b837151ff9c1296b5451dbd1ba2c6fa03a7\n"
    },
    {
      "commit": "b347a794a5ca4c51a563a559b08c5911df82e18b",
      "tree": "3bc9a006126559130b9f6222acbcd0c17edc9b19",
      "parents": [
        "eacf0b00a1511a780cacb4ca762a661495680558"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri Mar 20 14:59:24 2026 +0000"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Mar 23 10:49:23 2026 +0000"
      },
      "message": "Allow matchers to override auto-owners-approved\n\nSupport `auto-owners-approved` on individual OWNERS matchers so matcher\nrules can override the setting defined at the file level.\n\nAn explicit matcher value now wins over the surrounding OWNERS setting\nfor the files that matcher selects, while unset matchers continue to\ninherit the existing behavior.\n\nBug: Issue 489671151\nChange-Id: I3f39026fc3b6059b7c80cc4dea22e623bcb009a1\n"
    },
    {
      "commit": "eacf0b00a1511a780cacb4ca762a661495680558",
      "tree": "cbb164f366e5237985dcc32c9654b0c2182eea13",
      "parents": [
        "1f9a7f10ee92ea5fd9ce308b2783b8b18b882ef5"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri Mar 20 15:28:57 2026 +0000"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri Mar 20 17:10:55 2026 +0000"
      },
      "message": "Refactor tests in copy-condition IT\n\nExtract the repeated scenarios in AlreadyApprovedByCopyConditionIT into\na small helper that varies only the OWNERS config, change owner,\nuploader, and expected vote.\n\nChange-Id: I0bfa91e3b9a199f9daa23425cca94af845702bc8\n"
    },
    {
      "commit": "1f9a7f10ee92ea5fd9ce308b2783b8b18b882ef5",
      "tree": "8b3a43a21bf6a69f23a934af7339314629e76f91",
      "parents": [
        "b8692642d7cce650de29ba7888c8da51fc91f8b3"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 18 23:39:23 2026 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Mar 20 08:10:34 2026 -0700"
      },
      "message": "Remove unneeded @Nullable on rootEntry in PathOwners\n\nThe rootEntry in PathOwners is never null, because has a fallback\nvalue to an empty instance in case the root OWNERS file is missing.\n\nRemove both the @Nullable annotation and the null checks.\n\nChange-Id: Id0872040be5262090e7e7c686b96bd7d78b2334c\n"
    },
    {
      "commit": "b8692642d7cce650de29ba7888c8da51fc91f8b3",
      "tree": "07d688b69cd092892fc9804a1d06bc3257fe0439",
      "parents": [
        "771ee30ea83176ee593c0f2cb1bfb7d6fe2c8b2c"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 18 23:28:40 2026 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Mar 20 03:52:02 2026 -0700"
      },
      "message": "Avoid nullable PathOwnersEntry associated with projects\n\nDo not pass null PathOwnersEntry in PathOwners and rely on\nsafer Optional\u003c\u003e which allows to manage emptiness rather than\nnull pointers checks.\n\nChange-Id: I16a486d8c47cea5e2695feb7575a40d0503c6596\n"
    },
    {
      "commit": "771ee30ea83176ee593c0f2cb1bfb7d6fe2c8b2c",
      "tree": "08d1d9ab6a0fef2cf68768ba3a23decf9c998788",
      "parents": [
        "5ccc6692d755b6e4d7329e979d364b01513fa4ca"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 18 22:26:35 2026 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 18 15:28:44 2026 -0700"
      },
      "message": "Add AlreadyApprovedByCopyConditionsIT hierarchy OWNERS test cases\n\nThe current integration tests did not include enough test cases where\nthe OWNERS file was tested for hierarchy from the refs/meta/config to\nroot and subdirectory files.\n\nChange-Id: I7d509d4e3b7d4c5e6edb32b3373073ffdf96841f\n"
    },
    {
      "commit": "5ccc6692d755b6e4d7329e979d364b01513fa4ca",
      "tree": "b1d1ed5329601566f197aa5b40c056e0d84765f2",
      "parents": [
        "86cb6e6ffe25941c944b5a09852b5e020addd923"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Mar 16 09:38:00 2026 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Mar 18 19:40:18 2026 +0100"
      },
      "message": "Add auto-owners-approved to OWNERS\n\nAdd an `auto-owners-approved` setting to OWNERS files to control when\nowner approvals can be copied over to the next patchset.\n\nThe goal is to avoid unnecessary re-approval when an owner updates only\nfiles they already own on their own change. In that case, loosing the\nexisting vote adds little review value since they will need to\nre-approve it anyway.\n\nAt the same time, this setting lets repositories turn that shortcut off\nin sensitive paths where every update should get a fresh owner review.\n\nA vote is now copied over only when the approver is also the change\nowner and patch set uploader, all modified files are owned by that user,\nand none of those files disable auto approval.\n\nBug: Issue 489671151\nChange-Id: Icd3d7a95234db6192932253153f178525f3ef268\n"
    },
    {
      "commit": "86cb6e6ffe25941c944b5a09852b5e020addd923",
      "tree": "ada89d29631463f9aa4a97fce11bdd6ecfe19759",
      "parents": [
        "1f01cd7a035182c8231b83a0a83b2101830b9244"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Mar 17 16:33:12 2026 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Mar 17 08:36:37 2026 -0700"
      },
      "message": "Make fields PathOwners field final\n\nMake matchers, fileOwners and fileGroupOwners final.\n\nChange-Id: Idacfca342bce9042307cfe990b1db11b5462a6ab\n"
    },
    {
      "commit": "1f01cd7a035182c8231b83a0a83b2101830b9244",
      "tree": "98d01bf7e7d0b523e3dad4c69ed83bc81558e0ad",
      "parents": [
        "1087de4e5a1db4f416ee3dc5d5908c13c7dfc0ca"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Mar 17 09:55:06 2026 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Mar 17 12:27:33 2026 +0100"
      },
      "message": "Ignore commit message diffs in already-approved-by_owners\n\nFilter out /COMMIT_MSG before evaluating file ownership in\nAlreadyApprovedByPredicate.\n\nWithout this, a patch set that only changes the commit message could be\ntreated as modifying an owned file when ownership comes from a\ndirectory-level OWNERS file. That caused approverin:already-approved-\nby_owners to drop copied votes even though commit messages do not have\nowners.\n\nBy excluding the virtual commit message path from diff evaluation, the\npredicate continues to consider only real repository files when checking\nowner-based approval copying.\n\nChange-Id: I88d2b0b9f91bd035d7a2ff1c4691607bfe5975ef\n"
    },
    {
      "commit": "1087de4e5a1db4f416ee3dc5d5908c13c7dfc0ca",
      "tree": "f01e34354b529029aa3e1e95c2e497edd24f6e0f",
      "parents": [
        "cdea3e1c0b2a29a7569586f22139ac2fbd986743"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sun Mar 15 01:24:11 2026 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sun Mar 15 08:51:34 2026 +0000"
      },
      "message": "Replace use of static EMPTY ReadOnlyPathOwnersEntry with Optional\u003c\u003e\n\nThe use of EMPTY PathOwnersEntry with everything empty inside was an\nartificial simulation of an optional which made the code more complex to\nunderstand and also more inefficient.\n\nJust skip the evaluation of owners when there are no OWNERS\nconfiguration, making the code clearer and faster.\n\nChange-Id: I99acdfd03672d2ff67fa03ecf4d168f95d4b1cf9\n"
    },
    {
      "commit": "cdea3e1c0b2a29a7569586f22139ac2fbd986743",
      "tree": "9aea6ddd1261473f7e48a5c6ac10e085b84ebdf6",
      "parents": [
        "e0cf800fe21430b8376d1a31be5f7c6cae61239c"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sun Mar 15 01:44:11 2026 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sun Mar 15 01:45:22 2026 +0000"
      },
      "message": "Avoid passing rootEntry to calculateCurrentEntry()\n\nThe PathOwners.calculateCurrentEntry() did not use at all\nthe root entry config but simply checked its inheritance flag.\n\nAvoid passing the root entry config as parameter and resolve\nthe if/then/else conditional externally.\n\nChange-Id: Ie6bc00509b0da680c45e4a02efb68e6c1851eefb\n"
    },
    {
      "commit": "e0cf800fe21430b8376d1a31be5f7c6cae61239c",
      "tree": "95e028c4ccf2f2b5e1e712b2950189d8fe772e5e",
      "parents": [
        "3f8f169143c20aac9938339ae5c80ec01eddbf45"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sun Mar 15 00:55:35 2026 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Mar 14 17:57:07 2026 -0700"
      },
      "message": "Fix import of com.google.common.collect.Sets\n\nThe Sets was wrongly imported from org.apache.commons.compress.utils\ninstead of Guava.\n\nChange-Id: I7729fed267bb7658944c745351c26fcc895b09ba\n"
    },
    {
      "commit": "3f8f169143c20aac9938339ae5c80ec01eddbf45",
      "tree": "7f25881de31abea5184eaef210b8e45d605718ce",
      "parents": [
        "fc1f52ff974dfa25d61743b78e42b87182aa6be2"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Mar 14 17:41:58 2026 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Mar 14 10:46:28 2026 -0700"
      },
      "message": "Remove definition of owners-common as a plugin\n\nThe owners-common module of the owners\u0027 plugin isn\u0027t a plugin itself but\nsimply a Java library definition of classes shared between owners and\nowners-autoassign.\n\nRemove the plugin definition of owners-common and resume the correct\nbuild of the module.\n\nChange-Id: I05e7d96f66bccbdfc67bf26c65437edbe73d3906\n"
    },
    {
      "commit": "fc1f52ff974dfa25d61743b78e42b87182aa6be2",
      "tree": "c66884b115c4420d0dbc033376f5d592269d937e",
      "parents": [
        "1a09713cc3b0c370feb500b822921cddd0d2fcf0"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Mar 04 15:50:33 2026 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Mar 04 16:09:50 2026 +0100"
      },
      "message": "Open JDK internals for PowerMock in owners-common tests\n\nAdd JVM flags to //owners-common:test to open:\n- java.base/java.lang\n- java.base/java.util\n- java.base/java.util.stream\n\nowners-common unit tests use PowerMock and fail on JDKs \u003e\u003d 17 with\n\n\"InaccessibleObjectException when reflective access to JDK internals is\nblocked (e.g. java.lang.Object.finalize, HashMap internals, stream pipeline\nmethods)\"\n\nThis behavior became strict as the JDK moved from relaxed reflective\naccess to strong encapsulation:\n- JDK 16 set strong encapsulation by default (JEP 396)\n- JDK 17 removed the relaxed escape hatch (JEP 403)\n\nReferences:\n- https://openjdk.org/jeps/396\n- https://openjdk.org/jeps/403\n- https://github.com/powermock/powermock/issues/1161\n\nChange-Id: I2a2f1f34f10349ea85e758c085cdc61761ba1cef\n"
    },
    {
      "commit": "1a09713cc3b0c370feb500b822921cddd0d2fcf0",
      "tree": "2c5020945d070c96931a326387bf86fe2a919e1a",
      "parents": [
        "c37f09512cec1c162fed820d90c97011609c0138"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Mar 04 15:49:34 2026 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Mar 04 16:07:01 2026 +0100"
      },
      "message": "Disambiguate Truth assertions in owners-common tests\n\nAvoid ambiguous static resolution of assertThat by keeping\nTruth.assertThat for general subjects and using Truth8.assertThat\nexplicitly for Optional and OptionalInt assertions.\n\nowners-common tests were failing to compile since d8caea6712f9 with the\nfollowing error message:\n\n```\nboth method assertThat(Optional\u003c?\u003e) in Truth8 and method assertThat(Optional\u003c?\u003e) in Truth match\nowners-common/...: error: reference to assertThat is ambiguous\n```\n\nThis was because both Truth.assertThat and Truth8.assertThat were\nstatically imported.\n\nSwitch Optional assertions to explicit Truth8.assertThat(...) so that\ntheir usage is no longer ambiguous.\n\nChange-Id: I38fc5ef5a06aa0408fb9ced578ff1f4652f2e55f\n"
    },
    {
      "commit": "c37f09512cec1c162fed820d90c97011609c0138",
      "tree": "fe0857f9329afd07153e387cabbe4701766e9f48",
      "parents": [
        "511c6a9f9812e6df93fd7709cd0c36b1f97da56b"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Mar 04 14:26:13 2026 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Mar 04 14:26:13 2026 +0100"
      },
      "message": "Reformat with GJF 1.24\n\nChange-Id: Iee6114d880ae10045d7c262ad79a1a0edd7ef0b3\n"
    },
    {
      "commit": "e2e15c99909b11cccad4831422f210e19cd69a4b",
      "tree": "88120a6d35e133b9e8d6a7a19c464fabeb874e54",
      "parents": [
        "511c6a9f9812e6df93fd7709cd0c36b1f97da56b"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Feb 19 18:59:10 2026 -0800"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Feb 19 19:02:37 2026 -0800"
      },
      "message": "Use new ChangeIdentifier to identify changes in tests\n\nChange I305ff2d2c0 introduced a new way of handling change identifiers\nin order to make it easier to use the GerritApi for changes created by\nthe test API. However, this broke the owners plugin tests that relied on\nthe previous way of identifying changes.\n\nUpdate Owners plugins test to correctly use the new ChangeIdentifier.\n\nBug: Issue 485945890\nChange-Id: Iff525ab5683f64973680094bb9533fc4e2c26565\n"
    },
    {
      "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"
    },
    {
      "commit": "8d124d493378e12ace569dbef78e4ea077e159eb",
      "tree": "940be0210abd9187fd7e6f5c44666538eea4866e",
      "parents": [
        "0a509d897aa02b86ae6ae98c0a64654b57cb2a8d"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Jan 21 14:24:57 2026 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Jan 21 16:36:08 2026 +0100"
      },
      "message": "Set explicit project when creating test changes\n\nAlreadyApprovedByCopyConditionIT created changes without binding them to\nthe project under test, so individual tests could accidentally operate\non an arbitrary project and become flaky or misleading.\n\nSpecify the current `project` for each `newChange()` to ensure changes\nare always created in the expected repository.\n\nChange-Id: I87b988aae60a6dae6be5fc1845e06257ff057578\n"
    },
    {
      "commit": "0a509d897aa02b86ae6ae98c0a64654b57cb2a8d",
      "tree": "09da5a5a1196f21f8d5f3321fbc2ae03ae247574",
      "parents": [
        "35febff8677f369c2e0f547a56545dbbf557d5cc"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Nov 11 19:42:46 2025 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Thu Jan 08 09:57:55 2026 +0100"
      },
      "message": "Add predicate for sticky owner approvals\n\nIntroduce a new approval query operand, `already-approved-by_owners`,\nthat allows copying owner approvals across patch sets only when it is\nsafe to do so.\n\n`AlreadyApprovedByOwnerOperand` registers a `UserInOperandFactory` for\nthe new operand, and `AlreadyApprovedByOwnerPredicate` implements the\nmatching logic. When evaluating a copy condition for an approval, the\npredicate:\n\n- Computes the set of files modified between the source and target\n  patch sets using `DiffOperations`.\n- Checks whether any of the newly modified files are owned by the\n  current approver. If so, the approval is not copied and the owner\n  must re-approve.\n- If none of the newly modified files are owned by the approver, copies\n  the approval only when the approver has owned at least one file in the\n  previous patchset.\n\nTo support this, `GetFilesOwners` is extended with an `isAnyFileOwnedBy`\nhelper that computes ownership for a given set of paths, and the\nconstruction of `PathOwners` is factored into a private `getPathOwners`\nmethod reused by both the REST endpoint and the new predicate.\n\nFinally, `OwnersModule` is updated to install the new operand module so\nthat the `alreadyApprovedBy` operand is available to approval query\nexpressions.\n\nBug: Issue 458084508\nChange-Id: I1fb57d70756e1a04cae19475afe80b2a329a4d11\n"
    },
    {
      "commit": "35febff8677f369c2e0f547a56545dbbf557d5cc",
      "tree": "9f140346369221e1d6ace455842d6947ff14ab0e",
      "parents": [
        "0b2cb14b87c1135044c7eb823e16da2d3ff36943",
        "c020b99fa1127d25fe3cdbde040fd8f022fdbbfe"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Jul 28 21:33:06 2025 +0100"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Jul 28 21:33:06 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.11\u0027\n\n* stable-3.11:\n  Fix owners-autoassign compilation issue.\n\nChange-Id: I32310b6fafcd9bf66c928678fa244ed4693b527b\n"
    },
    {
      "commit": "c020b99fa1127d25fe3cdbde040fd8f022fdbbfe",
      "tree": "d9182c73ff15bc1f184af04eda898ece083adebe",
      "parents": [
        "8b1a0d94ca58955d9f9b156d89d0775686651e00"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Jul 28 16:49:14 2025 +0100"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Jul 28 21:28:56 2025 +0100"
      },
      "message": "Fix owners-autoassign compilation issue.\n\nI32cbcbe0 caused owners-autossign to fail even to compile.\nJudging from Idbeb9c5c, this was simply mismerged.\n\nChange-Id: If3421ed45331f74feeb6645f3dc6ad22a1c7eab2\n"
    },
    {
      "commit": "0b2cb14b87c1135044c7eb823e16da2d3ff36943",
      "tree": "424abfb6e980c37179e79f388431ae3f44d80ec6",
      "parents": [
        "c91797c0880079316b83ef72ff0955dfe9de25ac",
        "8b1a0d94ca58955d9f9b156d89d0775686651e00"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:19:32 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:19:32 2025 +0200"
      },
      "message": "Merge branch \u0027stable-3.11\u0027\n\n* stable-3.11:\n  Fix NPE in SyncReviewerManager\n\nChange-Id: Iae674221a0efac3d8e2e0604e0009b425df59991\n"
    },
    {
      "commit": "8b1a0d94ca58955d9f9b156d89d0775686651e00",
      "tree": "04cbe48428d9b6eed6a25fc0b2d3f26ea43cdb66",
      "parents": [
        "37fa52b14eee7257af9a33b26df58e8e5d5d484d",
        "b32b39d49ec19048d5e2fc223fd3f04111e6c884"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:18:49 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:18:49 2025 +0200"
      },
      "message": "Merge branch \u0027stable-3.10\u0027 into stable-3.11\n\n* stable-3.10:\n  Fix NPE in SyncReviewerManager\n\nChange-Id: I32cbcbe0015d84644132fdfa956e87ddbfdc3286\n"
    },
    {
      "commit": "b32b39d49ec19048d5e2fc223fd3f04111e6c884",
      "tree": "eb879b9413d5c24dd9ade811aadf26ff09cb2fa3",
      "parents": [
        "185a5fd3e3b78d97ff03456160a590a0d87ae2bc",
        "03b26e88c5cb8d45bc5d4168144837085654a237"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:16:43 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:16:43 2025 +0200"
      },
      "message": "Merge branch \u0027stable-3.9\u0027 into stable-3.10\n\n* stable-3.9:\n  Fix NPE in SyncReviewerManager\n\nChange-Id: Ia757d7e6ecd11b1c60726f7ebf47d51368e92c5f\n"
    },
    {
      "commit": "03b26e88c5cb8d45bc5d4168144837085654a237",
      "tree": "b3b556ae8ce3a8c623007a6d15d1b9c33a80351a",
      "parents": [
        "958287afc1406272247af7b9d4dc5189bcbadbe4",
        "17c8f739bdda4f633eb3288aef9c918a932288a9"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:16:22 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:16:22 2025 +0200"
      },
      "message": "Merge branch \u0027stable-3.8\u0027 into stable-3.9\n\n* stable-3.8:\n  Fix NPE in SyncReviewerManager\n\nChange-Id: Ie7b2c045469cbb018033af81b16ce6aa22964441\n"
    },
    {
      "commit": "17c8f739bdda4f633eb3288aef9c918a932288a9",
      "tree": "60780803ca4096aecc469807b056cda28f197f50",
      "parents": [
        "e8889908079c4d977118a1a4d731ea1b43b14ea3",
        "2a4c49247fcc7d07ef41d5d71e8cd919bc6cbae6"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:15:51 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:15:51 2025 +0200"
      },
      "message": "Merge branch \u0027stable-3.7\u0027 into stable-3.8\n\n* stable-3.7:\n  Fix NPE in SyncReviewerManager\n\nChange-Id: Iec42189b51505789cd55f63e68f6ebde327fa4b2\n"
    },
    {
      "commit": "2a4c49247fcc7d07ef41d5d71e8cd919bc6cbae6",
      "tree": "f55a59b28513f4735113749fff022f27dc0e210e",
      "parents": [
        "ab7e38909a8715486be9677c8849ce30f9d5d59f",
        "950fa978f8c23adea39c877654b2cebb67822cef"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:15:23 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:15:23 2025 +0200"
      },
      "message": "Merge branch \u0027stable-3.6\u0027 into stable-3.7\n\n* stable-3.6:\n  Fix NPE in SyncReviewerManager\n\nChange-Id: I1d2e2ffac2cba19da3dd70aa408df7be04fa46a9\n"
    },
    {
      "commit": "950fa978f8c23adea39c877654b2cebb67822cef",
      "tree": "f55a59b28513f4735113749fff022f27dc0e210e",
      "parents": [
        "ba786da84900daf3f7df54fb20952d999d145be3",
        "500c45a1073716894da0d8b633819307b904a8a2"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:14:48 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:14:48 2025 +0200"
      },
      "message": "Merge branch \u0027stable-3.5\u0027 into stable-3.6\n\n* stable-3.5:\n  Fix NPE in SyncReviewerManager\n\nChange-Id: Ib84e7a0b88993ebb30f1a6d22f0f86eaf274dcaa\n"
    },
    {
      "commit": "500c45a1073716894da0d8b633819307b904a8a2",
      "tree": "52f3f84db516c18fa398f6190bb6db2c7be358ed",
      "parents": [
        "aff1876bee63dba446a4b9a4a2c824390855418e"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 13:39:39 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 13:39:39 2025 +0200"
      },
      "message": "Fix NPE in SyncReviewerManager\n\nA NullPointerException occurred when attempting to auto-assign reviewers\nsynchronously, without explicitly registering the AutoassignModule in\ngerrit.config. This prevented reviewers from being assigned to changes.\n\nThis was caused by a mismerge of 3.4 (Iff9b12), which needlessly kept\ncalling `addToAttentionSet` even when the full list of reviewers had\nalready been computed.\n\nBug: Issue 353080249\nChange-Id: Idbeb9c5ce2235e4b97f2ca4daa18f0f8e234093f\n"
    },
    {
      "commit": "c91797c0880079316b83ef72ff0955dfe9de25ac",
      "tree": "d2a5917f82fe3ec4379d4f2d36838346ca242982",
      "parents": [
        "1b0dd568f2d80a87d1e20fe3bba8dad36e92d7cb"
      ],
      "author": {
        "name": "Paladox none",
        "email": "thomasmulhall410@yahoo.com",
        "time": "Fri May 09 10:39:19 2025 -0700"
      },
      "committer": {
        "name": "Paladox none",
        "email": "thomasmulhall410@yahoo.com",
        "time": "Fri May 09 10:39:36 2025 -0700"
      },
      "message": "Fix path to tsconfig in web_test_runner.sh\n\nChange-Id: I14406c2b28dec69bf933dd766cda68952c4f8271\n"
    },
    {
      "commit": "1b0dd568f2d80a87d1e20fe3bba8dad36e92d7cb",
      "tree": "58d35ce4c5adb91fee35341226c7a693b6db8366",
      "parents": [
        "b0ff50c5d571118ca8d4882ba53e3eda903bdcea",
        "282518bcc95ee13b087975e0570a4b1a35b3f6a1"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Fri May 09 10:35:56 2025 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 09 10:35:56 2025 -0700"
      },
      "message": "Merge \"Fix path to tsconfig-plugins-base.json\""
    },
    {
      "commit": "b0ff50c5d571118ca8d4882ba53e3eda903bdcea",
      "tree": "53bd303c531ca4ebe3ebf7811282c43350aed556",
      "parents": [
        "b74e35e7b3eee75c452855f468fff65abbb8d06b"
      ],
      "author": {
        "name": "Paladox none",
        "email": "thomasmulhall410@yahoo.com",
        "time": "Fri May 09 10:15:23 2025 -0700"
      },
      "committer": {
        "name": "Paladox none",
        "email": "thomasmulhall410@yahoo.com",
        "time": "Fri May 09 10:16:51 2025 -0700"
      },
      "message": "README: Update command for cloning gerrit to include --recurse-submodules\n\nChange-Id: I6539500d20b20a4c67e23fae16519703dfadd024\n"
    },
    {
      "commit": "282518bcc95ee13b087975e0570a4b1a35b3f6a1",
      "tree": "52d556118b28665031b8502dc369c69cdb1ffc17",
      "parents": [
        "b74e35e7b3eee75c452855f468fff65abbb8d06b"
      ],
      "author": {
        "name": "Paladox none",
        "email": "thomasmulhall410@yahoo.com",
        "time": "Fri May 09 10:10:31 2025 -0700"
      },
      "committer": {
        "name": "Paladox none",
        "email": "thomasmulhall410@yahoo.com",
        "time": "Fri May 09 10:11:14 2025 -0700"
      },
      "message": "Fix path to tsconfig-plugins-base.json\n\nI didn\u0027t read [0]. I just presumed that it was like all other plugins\nwhere you clone under gerrit/plugins and run bazel build plugins/\u003cname\u003e.\n\n[0] https://gerrit.googlesource.com/plugins/owners/+/refs/heads/master/README.md#build-in-gerrit-tree\n\nChange-Id: I4061eeaed16c86381262096cb089a47c0e5c92ee\n"
    },
    {
      "commit": "b74e35e7b3eee75c452855f468fff65abbb8d06b",
      "tree": "3fdc1f381a6ea513a93ec1e097813051525bb31c",
      "parents": [
        "429e6680e47c2ebe4db8ef07a37428b45dabb4f2"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Fri May 09 17:08:51 2025 +0100"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Fri May 09 17:08:51 2025 +0100"
      },
      "message": "Remove $ sign so whole block of commands can be copied at once\n\nChange-Id: I007acfb6c643d520e28d305d5de433a53ba13106\n"
    },
    {
      "commit": "429e6680e47c2ebe4db8ef07a37428b45dabb4f2",
      "tree": "aa16056be3ae5359b92b7b38bbf42dcc49ad18a3",
      "parents": [
        "9ece265e1b5e2128b1609452c4d03de91e7b93b8"
      ],
      "author": {
        "name": "Paladox none",
        "email": "thomasmulhall410@yahoo.com",
        "time": "Thu Apr 24 09:12:11 2025 -0700"
      },
      "committer": {
        "name": "Paladox none",
        "email": "thomasmulhall410@yahoo.com",
        "time": "Thu Apr 24 09:20:35 2025 -0700"
      },
      "message": "Migrate from karma to web-test-runner\n\nWe want to get rid of the final remnants of karma from gerrit core.\nThe recommended way to run tests is with web-test-runner.\n\nChange-Id: I2a30d9193f91e41b56a17dde9f402da077dd71c2\n"
    },
    {
      "commit": "9ece265e1b5e2128b1609452c4d03de91e7b93b8",
      "tree": "4ad8aab525cbe2be918b4b3a4bef1ae529042175",
      "parents": [
        "5e9eeaa3dc61704d359b57b113b5f80504c517fe",
        "37fa52b14eee7257af9a33b26df58e8e5d5d484d"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Wed Mar 19 10:58:41 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Wed Mar 19 10:58:41 2025 +0000"
      },
      "message": "Merge branch \u0027stable-3.11\u0027\n\n* stable-3.11:\n  API should take into account the configured approval label\n  Fix GJF 1.7 formatting on java files\n\nChange-Id: I625d6279a2e1955da186e77badc3688645a489a4\n"
    },
    {
      "commit": "37fa52b14eee7257af9a33b26df58e8e5d5d484d",
      "tree": "5b326d31e484382ac5a12fee2bb1c917218cf5fc",
      "parents": [
        "48e702bafb26ad324151313100fc896d7bced26f",
        "185a5fd3e3b78d97ff03456160a590a0d87ae2bc"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Wed Mar 19 10:58:18 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Wed Mar 19 10:58:18 2025 +0000"
      },
      "message": "Merge branch \u0027stable-3.10\u0027 into stable-3.11\n\n* stable-3.10:\n  API should take into account the configured approval label\n  Fix GJF 1.7 formatting on java files\n\nChange-Id: Iaa0d99b8530e488f05f5973bbf001e390d889878\n"
    },
    {
      "commit": "185a5fd3e3b78d97ff03456160a590a0d87ae2bc",
      "tree": "1a480bd0a77f6b0303164b89dcda112fa8cbe110",
      "parents": [
        "fddc91ca6a6778e9f73005f47e72c3a67be41ced",
        "958287afc1406272247af7b9d4dc5189bcbadbe4"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Wed Mar 19 10:57:48 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Wed Mar 19 10:57:48 2025 +0000"
      },
      "message": "Merge branch \u0027stable-3.9\u0027 into stable-3.10\n\n* stable-3.9:\n  API should take into account the configured approval label\n  Fix GJF 1.7 formatting on java files\n\nChange-Id: I2a47316538a0d7275f38dd719ee9764c33266b35\n"
    },
    {
      "commit": "958287afc1406272247af7b9d4dc5189bcbadbe4",
      "tree": "aa41ad3adf619843c07510682bb8dae3be8cfbf3",
      "parents": [
        "e88e680b47719f2a677274e2bda6d3ee81928133",
        "e8889908079c4d977118a1a4d731ea1b43b14ea3"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Wed Mar 19 10:57:19 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Wed Mar 19 10:57:19 2025 +0000"
      },
      "message": "Merge branch \u0027stable-3.8\u0027 into stable-3.9\n\n* stable-3.8:\n  API should take into account the configured approval label\n  Fix GJF 1.7 formatting on java files\n\nChange-Id: I6260d5df05e3bd02eb7942d84fd41c4a35b72818\n"
    },
    {
      "commit": "e8889908079c4d977118a1a4d731ea1b43b14ea3",
      "tree": "5eca0aab8df9eab6e02f706425aa677a33ccb947",
      "parents": [
        "5993225294e78fb95f782b5f0c81017bf908d73e"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Tue Mar 18 18:38:44 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Wed Mar 19 10:51:08 2025 +0000"
      },
      "message": "API should take into account the configured approval label\n\nCurrently the file owners api always disregards what\u0027s configured in the\nowners file unless default submit requirement is enabled and falls back\nto the max value for Code-Review label. There is no correlation between\nthe default submit requirement being enabled and which label should be\nused as approval label.\n\nRemove check on enableSubmitRequirement flag being set in order to\ncorrectly parse approval label.\n\nBug: Issue 404555670\nChange-Id: I2df61c49115653c423de7344e7d778d1805a6a2e\n"
    },
    {
      "commit": "5993225294e78fb95f782b5f0c81017bf908d73e",
      "tree": "23fa45c18e8c888f1a68d2e9d8642a01809ea73e",
      "parents": [
        "68a6c9316c72b6586c815f61421185fc9ba3b2ce"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Wed Mar 19 08:10:23 2025 +0100"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Wed Mar 19 08:10:23 2025 +0100"
      },
      "message": "Fix GJF 1.7 formatting on java files\n\nChange-Id: I03cda881d4dec7b9fdd919f83f60deac5debd319\n"
    },
    {
      "commit": "5e9eeaa3dc61704d359b57b113b5f80504c517fe",
      "tree": "c99c913f4a1bc9286b1eb97b2712bff8a114809a",
      "parents": [
        "89f4c873c3f7dcca5d45c020c2335437d907af5b"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Tue Mar 18 13:11:28 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Tue Mar 18 06:14:46 2025 -0700"
      },
      "message": "Owners plugin tests should only test owners plugin functionality\n\nCurrently we\u0027re testing default Gerrit core behaviours that could change\nanytime, and in fact this have changed in master causing one of the\ntests to be redundant.\n\nChange-Id: I119dbaeadddc33c9b17fdceca5c961a0d1386c71\n"
    },
    {
      "commit": "89f4c873c3f7dcca5d45c020c2335437d907af5b",
      "tree": "53467c050a043818d5db2b33668f0c99c5a8ee1c",
      "parents": [
        "5d085bfcf1a2653d6d83a2c4d8d130fd377fff1d",
        "48e702bafb26ad324151313100fc896d7bced26f"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Mar 13 22:01:27 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Mar 13 22:01:27 2025 +0000"
      },
      "message": "Merge branch \u0027stable-3.11\u0027\n\n* stable-3.11:\n  Warn about off-line reindexing when using the owners\u0027 plugin\n  Specify when owners.config label definition is required\n\nChange-Id: If4f35b8d0af04a22b4216cf402083cd6ec59f443\n"
    },
    {
      "commit": "48e702bafb26ad324151313100fc896d7bced26f",
      "tree": "53467c050a043818d5db2b33668f0c99c5a8ee1c",
      "parents": [
        "5d085bfcf1a2653d6d83a2c4d8d130fd377fff1d",
        "fddc91ca6a6778e9f73005f47e72c3a67be41ced"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Mar 13 22:00:46 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Mar 13 22:00:46 2025 +0000"
      },
      "message": "Merge branch \u0027stable-3.10\u0027 into stable-3.11\n\n* stable-3.10:\n  Warn about off-line reindexing when using the owners\u0027 plugin\n  Specify when owners.config label definition is required\n\nChange-Id: I208e4b20e59ef178e8d11be5aadc1f968fef7314\n"
    },
    {
      "commit": "fddc91ca6a6778e9f73005f47e72c3a67be41ced",
      "tree": "1ffdfb5c692bef6e88f0596894c712edcbdbb0b2",
      "parents": [
        "2be86bddb179905620241544da08ed262d112eab",
        "e88e680b47719f2a677274e2bda6d3ee81928133"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Mar 13 22:00:22 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Mar 13 22:00:22 2025 +0000"
      },
      "message": "Merge branch \u0027stable-3.9\u0027 into stable-3.10\n\n* stable-3.9:\n  Warn about off-line reindexing when using the owners\u0027 plugin\n  Specify when owners.config label definition is required\n\nChange-Id: I928501a89a49911ab8406b36c3943711c3219ce3\n"
    },
    {
      "commit": "e88e680b47719f2a677274e2bda6d3ee81928133",
      "tree": "3596c886979d268f038a4ae46756d6de875387e5",
      "parents": [
        "e7c04ae22d78d1de349f3dc8371f8f6d483196eb",
        "68a6c9316c72b6586c815f61421185fc9ba3b2ce"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Mar 13 21:59:53 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Mar 13 21:59:53 2025 +0000"
      },
      "message": "Merge branch \u0027stable-3.8\u0027 into stable-3.9\n\n* stable-3.8:\n  Warn about off-line reindexing when using the owners\u0027 plugin\n  Specify when owners.config label definition is required\n\nChange-Id: I23a8ce65daee991f397f956e22f41d710539ec5e\n"
    },
    {
      "commit": "68a6c9316c72b6586c815f61421185fc9ba3b2ce",
      "tree": "a2c5cc742451f8112021e4e769fdf624abfda1f4",
      "parents": [
        "74abb9e1b0c145656e497a2c89677168e30d1a6c"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Mar 13 20:18:54 2025 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Mar 13 20:18:54 2025 +0000"
      },
      "message": "Warn about off-line reindexing when using the owners\u0027 plugin\n\nThe owners plugin does not provide its predicates and functions\nwhen running the off-line reindexing, however, the documentation did\nnot contain any note about it.\n\nAdd one specific note in the plugin\u0027s overview with the explicit\nwarning about the plugin NOT providing its functionality when\nrunning off-line reindexing and the suggested command to use\nfor reindexing projects using the owners plugin.\n\nChange-Id: I55c2028c72450f68604aee8d8d1e37d9d4ab851e\n"
    },
    {
      "commit": "74abb9e1b0c145656e497a2c89677168e30d1a6c",
      "tree": "b416005fbe29a516e4ce35caec716a50f5d8001a",
      "parents": [
        "eafc579f8ba4d193b792679d27ff9188e4585897"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Mar 13 18:02:27 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Mar 13 13:00:59 2025 -0700"
      },
      "message": "Specify when owners.config label definition is required\n\nWhen no label functions are defined, as it should be now label.functions\nhave been deprecated for some time, the submit requirement and the\nfile owners api behave differently, leading to potential inconsistencies\nin the UI, where the submit requirement appears satisfied but files\nare still waiting for review, and viceversa.\n\nChange-Id: Id4fc9c848e8ddfa04439980595ae2d105f1d10ee\n"
    },
    {
      "commit": "5d085bfcf1a2653d6d83a2c4d8d130fd377fff1d",
      "tree": "586b51e8db6424b8dd510b58399c4f8cc401380c",
      "parents": [
        "b6fa286ed98a2870da29126773c32f53b885f33b"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Fri Jan 24 10:01:51 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Fri Jan 24 10:01:51 2025 +0000"
      },
      "message": "Fix typo in README.md\n\nChange-Id: Id508714fbe077e90a45142a12d17e52fbeb0eb46\n"
    },
    {
      "commit": "b6fa286ed98a2870da29126773c32f53b885f33b",
      "tree": "a836ad7d223eb52b97e9aea9dbdd513b68c0557f",
      "parents": [
        "4c2e5fffa07eb2d88f047fc80fbe1716f7f40fcc"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Jan 23 10:33:18 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Jan 23 06:35:24 2025 -0800"
      },
      "message": "Clarify what enableSubmitRequirement\u003dtrue does\n\nChange-Id: I3c4fb99fa12ea7dad81c88674e6f864999eb8cbf\n"
    },
    {
      "commit": "4c2e5fffa07eb2d88f047fc80fbe1716f7f40fcc",
      "tree": "bc55ba9b9a1738ab74b51f390b46064063aa2e9a",
      "parents": [
        "cda8e99fc38a8a806fd5786f44a9d080562e3535"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Jan 20 14:05:41 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Jan 23 10:26:37 2025 +0000"
      },
      "message": "Remove prolog examples from owners config.md\n\nChange-Id: Ic7bca9b0006532fc127426eef9ddf4b00033b11a\n"
    },
    {
      "commit": "cda8e99fc38a8a806fd5786f44a9d080562e3535",
      "tree": "f9d577697aa5291fb35a0bede1fb8b78a48ea531",
      "parents": [
        "224d6760d563c7a9d623d3e8a30a88c1fd5cf499"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Jan 20 15:27:20 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Jan 23 01:04:31 2025 -0800"
      },
      "message": "Add link to plugin overview presentation\n\nChange-Id: I974340007578ad560b14b12f2b550ea7f8a44129\n"
    },
    {
      "commit": "224d6760d563c7a9d623d3e8a30a88c1fd5cf499",
      "tree": "6eef2d7e69a6f655b05f8ca5566f76a5ff9fc56b",
      "parents": [
        "ac55d1a6518c77c820a6e4a1a6225507b181afea"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Fri Jan 17 05:45:16 2025 -0800"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Wed Jan 22 23:42:02 2025 -0800"
      },
      "message": "Make over-arching owners plugin docs more generic\n\nThere is no need to explain the details of either owners or\nowners-autoassign at the repository level, a brief introduction is more\nthan enough. Each plugin section can then be much more specific\nwith examples and extensive config options.\n\nChange-Id: Id7b7db57d328962d9819402ea2befc06c83d7406\n"
    },
    {
      "commit": "ac55d1a6518c77c820a6e4a1a6225507b181afea",
      "tree": "996e863367f58831a836b8b997c0d5fa0223d81a",
      "parents": [
        "ca4ea06b2bfd9a114240313db3845a18be62b471"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Tue Jan 14 09:35:53 2025 -0800"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Jan 20 07:34:35 2025 -0800"
      },
      "message": "Update owners plugin to clarify that prolog really is deprecated\n\nChange-Id: I126fbcd222bd463cd0fc1b45f87ca28ae3c9fab6\n"
    },
    {
      "commit": "ca4ea06b2bfd9a114240313db3845a18be62b471",
      "tree": "9e03f4ba98b34b518eadd65606d858277b4f7701",
      "parents": [
        "3e573a09a6c8f50219eeaef3efb40f70bfe9e2d6"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Tue Jan 14 09:17:04 2025 -0800"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Jan 20 07:29:54 2025 -0800"
      },
      "message": "Clarify owners-autoassign setup docs\n\nChange-Id: I159883c31c3a7954ef7255cca2b23248676c36bf\n"
    },
    {
      "commit": "3e573a09a6c8f50219eeaef3efb40f70bfe9e2d6",
      "tree": "cb006f7da036a2ed2acc2c19cea308158a75a8c5",
      "parents": [
        "4e0737a376b01fa392fe928761e1e88edbb4e549"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Fri Jan 10 10:31:02 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Fri Jan 10 10:31:02 2025 +0000"
      },
      "message": "Fix typo in owners-autoassign config.md\n\nChange-Id: Ie4a4a372ce66eec1921cc470420112685d009d46\n"
    },
    {
      "commit": "4e0737a376b01fa392fe928761e1e88edbb4e549",
      "tree": "9b7f36cd4018b5f7a883be38f1da6ff3ae9eef70",
      "parents": [
        "387d4dfdbd7e16bfe7214f2b5f84f6fcd54c2346",
        "2be86bddb179905620241544da08ed262d112eab"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 16:11:18 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 16:11:21 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.10\u0027\n\n* stable-3.10:\n  Document Owned Files tab in the Change screen\u0027s owners UI\n  Expire the owners cache after 1 minute and make it unlimited\n  Optimize the \u0027path_owners_entries\u0027 cache eviction\n  Introduce PathOwners cache from Ic7d61de07\n\nChange-Id: I57d7ab110be6729e437e86add05df408b7c2ec9e\n"
    },
    {
      "commit": "2be86bddb179905620241544da08ed262d112eab",
      "tree": "e15967f4fc1e89dd724c89810ca7e3d53d8423f5",
      "parents": [
        "0cd6015d4f0ef7a571b33e1a7223651c4a7faf2f",
        "e7c04ae22d78d1de349f3dc8371f8f6d483196eb"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 16:09:25 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 16:09:35 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.9\u0027 into stable-3.10\n\n* stable-3.9:\n  Document Owned Files tab in the Change screen\u0027s owners UI\n  Improve owners how-to-use.md\n  Expire the owners cache after 1 minute and make it unlimited\n  Optimize the \u0027path_owners_entries\u0027 cache eviction\n  Introduce PathOwners cache from Ic7d61de07\n  Include Gerrit\u0027s `shared-styles` in `Owned Files` tab\n  Document owners status on the change screen\n  Add `Status` column to the `Owned Files` tab\n\nChange-Id: Icdac09cf936763ddd599e615032bea3a9abcb123\n"
    },
    {
      "commit": "e7c04ae22d78d1de349f3dc8371f8f6d483196eb",
      "tree": "015b7dde9ec4fe45d62852b9e04eeabf2966d3ac",
      "parents": [
        "1d8c14ae107df17553a96519b04d947c40409bbe",
        "eafc579f8ba4d193b792679d27ff9188e4585897"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 16:05:55 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 16:06:01 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.8\u0027 into stable-3.9\n\n* stable-3.8:\n  Document Owned Files tab in the Change screen\u0027s owners UI\n  Improve owners how-to-use.md\n  Expire the owners cache after 1 minute and make it unlimited\n  Optimize the \u0027path_owners_entries\u0027 cache eviction\n  Introduce PathOwners cache from Ic7d61de07\n  Include Gerrit\u0027s `shared-styles` in `Owned Files` tab\n  Document owners status on the change screen\n  Add `Status` column to the `Owned Files` tab\n\nChange-Id: I79291d4180d3999507c5ccbd41d308d6a5d93a26\n"
    },
    {
      "commit": "eafc579f8ba4d193b792679d27ff9188e4585897",
      "tree": "486ba81b24dd7857b1e3a0c552ee976341b4ef83",
      "parents": [
        "6adf78d98cdce4fadbf163767a7c8d86771ba51f",
        "ab7e38909a8715486be9677c8849ce30f9d5d59f"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 16:04:40 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 16:04:44 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.7\u0027 into stable-3.8\n\n* stable-3.7:\n  Expire the owners cache after 1 minute and make it unlimited\n  Optimize the \u0027path_owners_entries\u0027 cache eviction\n  Introduce PathOwners cache from Ic7d61de07\n\nChange-Id: I8a663c170802746415ff0d4fc4259a16e3f26dfe\n"
    },
    {
      "commit": "ab7e38909a8715486be9677c8849ce30f9d5d59f",
      "tree": "239efb6aa41ae1bee29918e9a6fedf804c7431db",
      "parents": [
        "7f465ed471589da38e449c60c02c0384d34bfa56",
        "ba786da84900daf3f7df54fb20952d999d145be3"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 16:01:46 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 16:01:50 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.6\u0027 into stable-3.7\n\n* stable-3.6:\n  Expire the owners cache after 1 minute and make it unlimited\n  Optimize the \u0027path_owners_entries\u0027 cache eviction\n  Introduce PathOwners cache from Ic7d61de07\n\nChange-Id:  Ia79257fe2e9c76c0c1285187bf7c88649f135c62\n"
    },
    {
      "commit": "ba786da84900daf3f7df54fb20952d999d145be3",
      "tree": "239efb6aa41ae1bee29918e9a6fedf804c7431db",
      "parents": [
        "038b04519903a980b8d077dd81e25af109b76973",
        "aff1876bee63dba446a4b9a4a2c824390855418e"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 15:59:46 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 15:59:53 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.5\u0027 into stable-3.6\n\n* stable-3.5:\n  Expire the owners cache after 1 minute and make it unlimited\n  Optimize the \u0027path_owners_entries\u0027 cache eviction\n  Introduce PathOwners cache from Ic7d61de07\n\nChange-Id: I6ffad8525b95a5bdbce8122cd99f695bd798fd37\n"
    },
    {
      "commit": "aff1876bee63dba446a4b9a4a2c824390855418e",
      "tree": "597912a580fdb93d3f78b5a2d9c7c331e309accd",
      "parents": [
        "b9f14145d5b665d7ea214314be9bf133d4cdedc9",
        "a98e78ba821840f77240acf04d093f9411da8552"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 15:57:06 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 15:57:23 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.4\u0027 into stable-3.5\n\n* stable-3.4:\n  Expire the owners cache after 1 minute and make it unlimited\n  Optimize the \u0027path_owners_entries\u0027 cache eviction\n  Introduce PathOwners cache from Ic7d61de07\n\nChange-Id: I038f21524b7df93422b0ccd0f95afc5b9819828a\n"
    },
    {
      "commit": "6adf78d98cdce4fadbf163767a7c8d86771ba51f",
      "tree": "80f963e2a12d8f428cc4cec898350046c9ca7bd8",
      "parents": [
        "34ce461240ffbb5765632a89092ead16c9da56d0"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Dec 19 23:05:34 2024 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Dec 23 03:57:49 2024 -0800"
      },
      "message": "Document Owned Files tab in the Change screen\u0027s owners UI\n\nThe owners plugin UI has a new tab displaying the list of files\nowned by the current user.\n\nDocument the UI behaviour and meaning, including the limitation\nof its inaccuracy in case of having owners.expandGroups \u003d false.\n\nChange-Id: I88a676da97fc1f009b6c7ed4bc7e385ab7cfebbc\n"
    },
    {
      "commit": "387d4dfdbd7e16bfe7214f2b5f84f6fcd54c2346",
      "tree": "d34bee66396225f70ce1096e41dab3947ec9aefc",
      "parents": [
        "3f6e06965e678b7e52108b82809f923a201bb0cd",
        "c60596b52ba7e63df8170fd0113c222aa27b7ca1"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Dec 19 14:17:43 2024 -0800"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 19 14:17:43 2024 -0800"
      },
      "message": "Merge \"Remove references to replacement mode\""
    },
    {
      "commit": "c60596b52ba7e63df8170fd0113c222aa27b7ca1",
      "tree": "c934517231bc39baa96dc2f76b1bbce6cdf3d264",
      "parents": [
        "34ce461240ffbb5765632a89092ead16c9da56d0"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Dec 19 22:13:30 2024 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Dec 19 22:15:28 2024 +0000"
      },
      "message": "Remove references to replacement mode\n\nChange-Id: I048468500386352c2db661cbdc64ddb21c8207a4\n"
    },
    {
      "commit": "34ce461240ffbb5765632a89092ead16c9da56d0",
      "tree": "dd249015c3b599b7e0dce890477b9104d1fed6c5",
      "parents": [
        "71a50eac1ac81558fc1ebf6bbb3774782cf7658c"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Dec 19 20:56:16 2024 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Dec 19 13:55:13 2024 -0800"
      },
      "message": "Improve owners how-to-use.md\n\nAddressing post merge comments from I4b8a26533 to improve clarity and\nreadability.\n\nChange-Id: I9ee44ca647eebb0241b372aa6ecb9c84d02232d6\n"
    },
    {
      "commit": "a98e78ba821840f77240acf04d093f9411da8552",
      "tree": "a5a607d0939a4a3983ceb4f0dc18da6ebb8f9c2d",
      "parents": [
        "99c5c56b4b636d147e2eb9f3002c00ce877073d7"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Dec 02 10:52:18 2024 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Dec 19 08:42:45 2024 -0800"
      },
      "message": "Expire the owners cache after 1 minute and make it unlimited\n\nChange-Id: I64ecf6d4b721cec0185d79cbc30c94b291d763dc\n"
    },
    {
      "commit": "99c5c56b4b636d147e2eb9f3002c00ce877073d7",
      "tree": "10c34d98fa971d6898d1d5b1885ba152b87757d5",
      "parents": [
        "965169d6541118e78363c8059cdd4ec77bb32224"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Sat Apr 15 16:10:59 2023 +0200"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Dec 19 08:42:37 2024 -0800"
      },
      "message": "Optimize the \u0027path_owners_entries\u0027 cache eviction\n\nThe OWNERS file can be present either under the `refs/meta/config` or\n`refs/heads/*` ref. Ignore evictions to All-Users project and to other\n(gerrit technical refs).\n\nBug: Issue 16830\nChange-Id: I2c2d4a6ec3950f7890ae1d8e372f71bffcc7796b\n"
    },
    {
      "commit": "965169d6541118e78363c8059cdd4ec77bb32224",
      "tree": "4666cbff2d82f5519365263d536025c62b1c826b",
      "parents": [
        "03030bb4dce948f6f626a2ca5608ed725ae3a59b"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Dec 02 10:03:07 2024 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Dec 19 16:37:48 2024 +0000"
      },
      "message": "Introduce PathOwners cache from Ic7d61de07\n\nChange-Id: I7a77d356137b12b179bbdd98041ab2ccd8b3bb66\n"
    },
    {
      "commit": "71a50eac1ac81558fc1ebf6bbb3774782cf7658c",
      "tree": "17b485e569b9070ed42db59159d4ca373c7f792e",
      "parents": [
        "15d3d207b9a63705e1cc251e6e9409b2f124337b"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Thu Dec 19 08:05:10 2024 +0100"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Thu Dec 19 08:05:10 2024 +0100"
      },
      "message": "Include Gerrit\u0027s `shared-styles` in `Owned Files` tab\n\nAdd common Gerrit\u0027s styles to `Owned Files` components so that they get\nconsistently styled e.g. links are highlighted in the same color etc.\n\nBug: Issue 384100207\nChange-Id: I80360f56f425d36b7b129694dabe7ad99e82cf55\n"
    },
    {
      "commit": "15d3d207b9a63705e1cc251e6e9409b2f124337b",
      "tree": "46bbf62a647fa2b069bf9e68afc1b307a3da0a29",
      "parents": [
        "bdb4e8a7f8cc71d2583141cb909162ee7caaf4a7",
        "b2eeaab1556382d7a9f469dbc1a598ca96f74e9c"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Wed Dec 18 02:01:44 2024 -0800"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 18 02:01:44 2024 -0800"
      },
      "message": "Merge \"Document owners status on the change screen\" into stable-3.8"
    },
    {
      "commit": "b2eeaab1556382d7a9f469dbc1a598ca96f74e9c",
      "tree": "3a0bc3f12c8c1b8fa42da1e4592f0d7c4974434e",
      "parents": [
        "a0b6cf369f2791e4d2f0b700e9112f2b00025178"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Wed Dec 11 19:42:56 2024 +0100"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Wed Dec 18 10:58:48 2024 +0100"
      },
      "message": "Document owners status on the change screen\n\nSubmit requirements panel and `Files` tab owner\u0027s plugin additions were\ndocumented in both submit requirements and replacement modes.\n\nThe `Owned Files` tab and UI behaviour when `owners.expandGroups \u003d\nfalse` will be covered in the follow ups.\n\nBug: Issue 382509294\nChange-Id: I4b8a26533166b3b7464a8c2a7e1515da3e3a8130\n"
    },
    {
      "commit": "bdb4e8a7f8cc71d2583141cb909162ee7caaf4a7",
      "tree": "0f0cce55667f719d5deafc947e21ae015eb4d7f6",
      "parents": [
        "7f12b9241539f5f0d4e54e0042372e938902b4ab"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Wed Dec 18 07:34:23 2024 +0100"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Wed Dec 18 10:33:40 2024 +0100"
      },
      "message": "Add `Status` column to the `Owned Files` tab\n\nPrior to this change it wasn\u0027t clear which owned files are already\napproved (for instance by other reviewers that own subset of files).\nAdd a `Status` column (before `File`) that:\n* contains orange clock icon for each file that still needs to be\n  approved\n* contains green ✓ icon for file that was approved by someone else\n\nBug: Issue 384100207\nChange-Id: I1dc8ce4b1d3bc90cdb58817a0f92a88c83611400\n"
    },
    {
      "commit": "3f6e06965e678b7e52108b82809f923a201bb0cd",
      "tree": "875467047b248413e44dd0257cc8ac02a5dfd554",
      "parents": [
        "2642dae503087b74dd04ffef2c6bae1646c2d7f2",
        "0cd6015d4f0ef7a571b33e1a7223651c4a7faf2f"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Dec 17 15:49:39 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Dec 17 15:49:45 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.10\u0027\n\n* stable-3.10:\n  Fix `Owned Files` status icon when some files are already approved\n  Fix misleading log message when adding reviewers\n  Add status icon to the `Owned Files` tab header\n  Unify check if change contains owners submit requirements\n  Show owners files statuses and `Owned Files` tab in replacment mode\n  Remove `allFilesApproved` state from the `OwnersState`\n  Show `Owned Files` even when all files were approved\n  Don\u0027t display `Owned Files` when not current PS is viewed\n\nChange-Id: I33933afd073b253066f8fde0d88a25fe54a8bfd3\n"
    },
    {
      "commit": "0cd6015d4f0ef7a571b33e1a7223651c4a7faf2f",
      "tree": "baed7a8967b8d45f4f8e00a830a20226d18c6f7b",
      "parents": [
        "e01297788b0e8351cf7f31730ab0e6999dfa4861",
        "1d8c14ae107df17553a96519b04d947c40409bbe"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Dec 17 15:48:42 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Dec 17 15:48:59 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.9\u0027 into stable-3.10\n\n* stable-3.9:\n  Fix `Owned Files` status icon when some files are already approved\n  Fix misleading log message when adding reviewers\n  Add status icon to the `Owned Files` tab header\n  Unify check if change contains owners submit requirements\n  Show owners files statuses and `Owned Files` tab in replacment mode\n  Remove `allFilesApproved` state from the `OwnersState`\n  Show `Owned Files` even when all files were approved\n  Don\u0027t display `Owned Files` when not current PS is viewed\n  Ensure that `Owned Files` is not switchable when no files are owned\n  Match Owned Files entries even when owners.expandGroups \u003d\u003d false\n\nChange-Id: I13ca03f357426a8971a376dcc624f1f419929a32\n"
    },
    {
      "commit": "1d8c14ae107df17553a96519b04d947c40409bbe",
      "tree": "6375b492601bfb5337d42097949f7dda4f65f7fd",
      "parents": [
        "5ef862d663c0fdbffd5bbe9547cd3e55ef86e333",
        "7f12b9241539f5f0d4e54e0042372e938902b4ab"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Dec 17 15:47:06 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Dec 17 15:47:18 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.8\u0027 into stable-3.9\n\n* stable-3.8:\n  Fix `Owned Files` status icon when some files are already approved\n  Fix misleading log message when adding reviewers\n  Add status icon to the `Owned Files` tab header\n  Unify check if change contains owners submit requirements\n  Show owners files statuses and `Owned Files` tab in replacment mode\n  Remove `allFilesApproved` state from the `OwnersState`\n  Show `Owned Files` even when all files were approved\n  Don\u0027t display `Owned Files` when not current PS is viewed\n  Ensure that `Owned Files` is not switchable when no files are owned\n  Match Owned Files entries even when owners.expandGroups \u003d\u003d false\n\nChange-Id: Ie2310548b34f2bc4332c0604c5e69d3b79c7b76d\n"
    },
    {
      "commit": "7f12b9241539f5f0d4e54e0042372e938902b4ab",
      "tree": "e89a43e0bd02f953114dc139761452fb0057aa81",
      "parents": [
        "1b5c3287b4b2e3a07fa1258e99cd3752de4768ce",
        "7f465ed471589da38e449c60c02c0384d34bfa56"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Dec 17 15:45:47 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Dec 17 15:45:53 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.7\u0027 into stable-3.8\n\n* stable-3.7:\n  Fix misleading log message when adding reviewers\n\nChange-Id: Ie94419ca4e2b3a49a5b88a55b4be020bd0841a61\n"
    },
    {
      "commit": "7f465ed471589da38e449c60c02c0384d34bfa56",
      "tree": "cc253c9f117b72ba2d5e77c928fe7d2f546dd21a",
      "parents": [
        "4f4bcc5ba11676f16a99bd724cf20a62f356cdca",
        "038b04519903a980b8d077dd81e25af109b76973"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Dec 17 15:39:16 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Dec 17 15:40:47 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.6\u0027 into stable-3.7\n\n* stable-3.6:\n  Fix misleading log message when adding reviewers\n\nChange-Id: I6660cb2fc3205b279f37a5d7ce3376e61ec79c6c\n"
    },
    {
      "commit": "038b04519903a980b8d077dd81e25af109b76973",
      "tree": "cc253c9f117b72ba2d5e77c928fe7d2f546dd21a",
      "parents": [
        "50cea7f4c7d5c67239b591b877f492f1d2625ebe",
        "b9f14145d5b665d7ea214314be9bf133d4cdedc9"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Dec 17 15:38:05 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Dec 17 15:38:18 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.5\u0027 into stable-3.6\n\n* stable-3.5:\n  Fix misleading log message when adding reviewers\n\nChange-Id: Iebaa35a3620ee047c5d1ead8e650e6c3121956a3\n"
    },
    {
      "commit": "b9f14145d5b665d7ea214314be9bf133d4cdedc9",
      "tree": "f57e99640da2a08d11a3a6e08d7d56739a9bc65d",
      "parents": [
        "4871e00587db71f1de649a79f27b01463076e851",
        "03030bb4dce948f6f626a2ca5608ed725ae3a59b"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Dec 17 15:34:32 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Dec 17 15:36:13 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.4\u0027 into stable-3.5\n\n* stable-3.4:\n  Fix misleading log message when adding reviewers\n\nChange-Id: Ie60cdce3dd35a3e727c33077c66d49c9851b0c65\n"
    },
    {
      "commit": "1b5c3287b4b2e3a07fa1258e99cd3752de4768ce",
      "tree": "358f3e1e24a9da0329a68bc46663a201c7355a43",
      "parents": [
        "27e930d427935ebfc550f3649609ba5ada453b55"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Fri Dec 13 14:20:52 2024 +0100"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Tue Dec 17 11:08:16 2024 +0100"
      },
      "message": "Fix `Owned Files` status icon when some files are already approved\n\nHandle the case when \u0027some of them were approved by someone else but\nstill some need an approval\u0027 is still indicated with orange clock icon\nand the following tooltip when hovered:\n\n Missing approval for X file[s] and X file[s] already approved.\n\nBug: Issue 383596444\nChange-Id: I89bdea16f1659ffd174437f34f03e1842f027c64\n"
    },
    {
      "commit": "03030bb4dce948f6f626a2ca5608ed725ae3a59b",
      "tree": "13caed2d79dec1e7d807bbe239fc5086cd921916",
      "parents": [
        "e1cdd0e7cd9916203ff585a9db59a1ee43dec1cc"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 16 14:27:11 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 16 14:27:11 2024 +0100"
      },
      "message": "Fix misleading log message when adding reviewers\n\nCommit I94576ca11 fixed an issue where an account already added as a\nreviewer would be re-added to the change. However, this introduced a bug\nwhere the warning message:\n\n  \"Not adding account X as reviewer to change Y because the associated\nref is not visible\"\n\nwas incorrectly logged when an account was already a reviewer, even if\nvisibility was not the issue.\n\nEnsure the warning is only logged when a reviewer is not added due to\nvisibility restrictions, and not when they are simply already assigned.\n\nBug: Issue 348598501\nChange-Id: I7f15643634abc51a156861163ac32a7a6bfd4eb5\n"
    },
    {
      "commit": "27e930d427935ebfc550f3649609ba5ada453b55",
      "tree": "1d5be6c6fb6325b8fb82dfbf8c1868277c6a656e",
      "parents": [
        "c9777e9e89cab5854f543fe41a97b89c013fec8d"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Fri Dec 13 14:20:52 2024 +0100"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Mon Dec 16 11:53:52 2024 +0100"
      },
      "message": "Add status icon to the `Owned Files` tab header\n\nWhen files owner opens a change screen status icon immediately indicates\nthe following status of owned files:\n* they need a review with orange clock icon and the following tooltip\n  when hovered\n\n    Missing approval for X file[s].\n\n* they are already approved (also by someone else) with green checked\n  icon and the following tooltip when hovered\n\n    X file[s] already approved.\n\nNew functionality was covered in the unit tests.\n\nBug: Issue 383596444\nChange-Id: I1cf4fccf692d966e3658b42aa153a465242a7b09\n"
    },
    {
      "commit": "c9777e9e89cab5854f543fe41a97b89c013fec8d",
      "tree": "3adc87d6013ab48378d134bfd92ce1837637582a",
      "parents": [
        "a0b6cf369f2791e4d2f0b700e9112f2b00025178"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Mon Dec 16 09:30:16 2024 +0100"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Mon Dec 16 11:53:02 2024 +0100"
      },
      "message": "Unify check if change contains owners submit requirements\n\nGerrit returns the following details in submit requirements when:\n1. `has:approval_owners` predicate is defined in projects hierarchy\n  {\n    \"name\": \"Owner-Approval\",\n    \"description\": \"Files needs to be approved by owners\",\n    \"status\": \"UNSATISFIED\",\n    \"is_legacy\": false,\n    \"submittability_expression_result\": {\n      \"expression\": \"has:approval_owners\",\n      ...\n    }\n  }\n\n2. when working in the replacement mode (requirement is NOT satisfied)\n  {\n    \"name\": \"Code-Review from owners\",\n    \"status\": \"UNSATISFIED\",\n    \"is_legacy\": true,\n    \"submittability_expression_result\": {\n        \"expression\": \"label:Code-Review from owners\\u003downers~OwnersSubmitRequirement\",\n        ...\n    }\n  }\n\n3. when working in the replacement mode (requirement is satisfied)\n  {\n    \"name\": \"owners~OwnersSubmitRequirement\",\n    \"status\": \"SATISFIED\",\n    \"is_legacy\": true,\n    \"submittability_expression_result\": {\n        \"expression\": \"rule:owners~OwnersSubmitRequirement\",\n        ...\n    }\n  }\n\nUnify the check so that `expression` parameter is verified if it either\ncontains `has:approval_owners` predicate or\n`owners~OwnersSubmitRequirement` rule.\n\nUnit tests were updated to reflect this change.\n\nChange-Id: Ic9bf1bf5516cb87aa2e5b20af46040293b41bb9b\n"
    },
    {
      "commit": "a0b6cf369f2791e4d2f0b700e9112f2b00025178",
      "tree": "1330e1007962078c7a3cd0787e2803363e694958",
      "parents": [
        "a0e91f4f03839cecb8fe5c6b4a443d82aa0a2c76"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Sun Dec 01 16:02:43 2024 +0100"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Mon Dec 02 08:20:10 2024 +0100"
      },
      "message": "Show owners files statuses and `Owned Files` tab in replacment mode\n\nWhen `has:approval_owners` predicate is not configured for any project\nin the hierarchy but `onwers.submitRequirements \u003d true` is set in\n`owners.config` instead then OWNERS file rules are still evaluted,\nhowever, they are reported only in form of\n`owners~OwnersSubmitRequirement` submit record.\n\nEnsure that owners files statues and `Owned Files` tab are visible for\nthe corresponding changes. Note that common\n`hasOwnersSubmitRequirementOrRecord` function was introduced (in\n`owners-service.ts`) and it is being re-used consistently for both\n`Files` and `Owned Files` tabs. It was also covered with unit tests.\n\nBug: Issue 381679562\nChange-Id: I74c12d7cf88240736afdd38fab83fe22538a20cb\n"
    },
    {
      "commit": "a0e91f4f03839cecb8fe5c6b4a443d82aa0a2c76",
      "tree": "52b624c11b608533b9fb12e38d312f5816ad1365",
      "parents": [
        "806760834cb4d1cf4e7d403f1737fd9599be3fe5"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Fri Nov 29 09:42:25 2024 +0100"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Fri Nov 29 09:42:25 2024 +0100"
      },
      "message": "Remove `allFilesApproved` state from the `OwnersState`\n\nBoth owners files status and `Owned Files` tab are shown regardless of\nthe fact that all files are approved or not therefore this state is no\nlonger needed in the UI.\n\nChange-Id: I452ce7957bd411fc4c6074cffeb2a0a0bccf563b\n"
    },
    {
      "commit": "806760834cb4d1cf4e7d403f1737fd9599be3fe5",
      "tree": "71cd7674bf48f229819865a46ba461a758f4302c",
      "parents": [
        "3f053adb768f073e6cc5429ce02bd830d3f6c5fc"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Fri Nov 29 09:22:15 2024 +0100"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Fri Nov 29 09:22:15 2024 +0100"
      },
      "message": "Show `Owned Files` even when all files were approved\n\nThe `Owned Files` tab was introduced before `files_approved` property\nwas introduced to the owners plugin REST API response. As a result when\nuser approved change the `Owned Files` tab was no longer visible.\n\nThis change ensures that tab is visible even if all files are approved.\nNew functionality was covered in unit tests.\n\nBug: Issue 377723880\nChange-Id: I2164287960a14fd833c0c0f27a53c8eca41d8901\n"
    },
    {
      "commit": "2642dae503087b74dd04ffef2c6bae1646c2d7f2",
      "tree": "c11598bf9d7bbf36b5973e471d3de416ccfc78a4",
      "parents": [
        "7089b1ed81bf16e4d1b9bf0a3f144f3add5fdd17",
        "17c154d6ae757a7f4350bf8aef296c5a52b60bc1"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Nov 28 10:38:13 2024 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 28 10:38:13 2024 +0000"
      },
      "message": "Merge \"Fix typo in owners docs\""
    },
    {
      "commit": "3f053adb768f073e6cc5429ce02bd830d3f6c5fc",
      "tree": "c6e0f0dafa80f5a4a2bd7a31e2bfbad8d568bb75",
      "parents": [
        "5dcef61999ff663291c4c1e907e660f9cf21e7a9"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Thu Nov 28 09:08:50 2024 +0100"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Thu Nov 28 09:08:50 2024 +0100"
      },
      "message": "Don\u0027t display `Owned Files` when not current PS is viewed\n\nThe `owners` plugin\u0027s REST API returns files/owners status only for the\ncurrent_revision regardless of what is passed as the revision parameter.\nConsidering that it is better to not show `Owned Files` tab then display\ndifferent list of owned files as it may differ between PS\u0027.\n\nThis behaviour is consistent with showing owners status on the `Files`\ntab - it is not shown for the current_revision.\n\nBug: Issue 380110854\nChange-Id: Id8fbcc1a6a6b8a52658e4f66a2fd69dd1960a917\n"
    },
    {
      "commit": "17c154d6ae757a7f4350bf8aef296c5a52b60bc1",
      "tree": "763bcbe73a228ca1e8366b9e7cea202cd2b6200d",
      "parents": [
        "5dcef61999ff663291c4c1e907e660f9cf21e7a9"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Nov 25 18:27:39 2024 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Nov 25 18:27:39 2024 +0000"
      },
      "message": "Fix typo in owners docs\n\nChange-Id: Ib27fc5fd78dd3c40b8939cbfc453eef68c1e2ea4\n"
    },
    {
      "commit": "5dcef61999ff663291c4c1e907e660f9cf21e7a9",
      "tree": "9078241275c3749edb7c04cdb5ce13928aee11b5",
      "parents": [
        "50e45819a01ccc6945d72d1a672f81651c1fafdc"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Sun Nov 24 10:54:02 2024 +0100"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Sun Nov 24 10:54:02 2024 +0100"
      },
      "message": "Ensure that `Owned Files` is not switchable when no files are owned\n\nWhen plugin registers itself for tab display even if `nothing` is\nreturned Gerrit still shows the pointer and allows clicking at it,\nredirecting to the empty tab when done.\n\nTraverse through the shadowRoots down to the tab and disable/enable\nit when needed. As a result it is no longer possible to select an empty\ntab without content.\n\nChange-Id: Ib9da5fe0ed8ba564f8d62de2f8b13179ae232a4e\n"
    },
    {
      "commit": "50e45819a01ccc6945d72d1a672f81651c1fafdc",
      "tree": "7bb1abb2b89cfb1e1671f6ed6188b76f05c104cc",
      "parents": [
        "d57971d301056ce77a25df9d8ed6485356d5b42d"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Sat Nov 23 10:25:19 2024 +0100"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Sat Nov 23 10:49:56 2024 +0100"
      },
      "message": "Match Owned Files entries even when owners.expandGroups \u003d\u003d false\n\nWhen `owners.expandGroups \u003d\u003d false` then neither groups nor accounts are\nexpaned in the plugins REST API response. In addition, owner can be\nconfigured as:\n* email - in this case the `@domain` is dropped\n* full user name - in this case full user name is conveyed\n\nConsidering the above when `Owned Files` tab content is resolved then:\n* if file owner has no `account_id` resolved (so that we avoid false\n  positive matches when `owners.expandGroups \u003d\u003d true`)\n* try to match its name with email without domain\n* try to match its name with full name\n\nBug: Issue 379269836\nChange-Id: I68794b4477758b62cdd2bba717a263505ac8d55b\n"
    },
    {
      "commit": "7089b1ed81bf16e4d1b9bf0a3f144f3add5fdd17",
      "tree": "c2d9f57052ffa7aeea78d755f0938806ab620ff1",
      "parents": [
        "895ee0b4b74fd20a92849785e1da80a3f1fd8c23",
        "e01297788b0e8351cf7f31730ab0e6999dfa4861"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Nov 22 08:51:09 2024 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Nov 22 08:51:09 2024 +0000"
      },
      "message": "Merge branch \u0027stable-3.10\u0027\n\n* stable-3.10:\n  Display owners details even when owners.expandGroups \u003d\u003d false\n  Introduce OwnersApiCache\n  Show green ✔ (check mark) for file approved by owner(s)\n  Remove circle-shape parameter from the vote chip\n  Center the file status icon\n\nChange-Id: Ia96dd37055bbe8aad38fcc55dbf81db1088fca3b\n"
    },
    {
      "commit": "e01297788b0e8351cf7f31730ab0e6999dfa4861",
      "tree": "76bd80fe8af0f7e3dce9a79443f5b2bcde0c420b",
      "parents": [
        "ac7ff7d14877f24fcb70275281074cff90350aaa",
        "5ef862d663c0fdbffd5bbe9547cd3e55ef86e333"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Nov 22 08:50:17 2024 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Nov 22 08:50:17 2024 +0000"
      },
      "message": "Merge branch \u0027stable-3.9\u0027 into stable-3.10\n\n* stable-3.9:\n  Display owners details even when owners.expandGroups \u003d\u003d false\n  Introduce OwnersApiCache\n  Show green ✔ (check mark) for file approved by owner(s)\n  Remove circle-shape parameter from the vote chip\n  Center the file status icon\n\nChange-Id: Ie8f8120c90595630041c821ff37338d5b776ca7d\n"
    }
  ],
  "next": "5ef862d663c0fdbffd5bbe9547cd3e55ef86e333"
}
