)]}'
{
  "log": [
    {
      "commit": "ea54d61718e1c3a4bf0744f587fd2161797d3018",
      "tree": "8294cdaf8babc8318be89deecc58e878ab7855fd",
      "parents": [
        "b38f55c7cca9953ff87cddae94426aa55c096da3"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Jun 22 07:03:07 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Jun 22 07:14:14 2026 +0200"
      },
      "message": "Bazel: Remove redundant plugin build boilerplate\n\nRecent bazlets changes let gerrit_plugin() resolve Maven coordinates\npassed through ext_deps against the default \u003cplugin\u003e_plugin_deps\nrepository.\n\nThey also let gerrit_plugin_tests() derive the default test target name,\nwire the plugin under test, resolve external test dependencies from\next_deps, and generate the runtime dependency checks when plugin is set.\n\nUse those macro defaults in owners-common-api instead of spelling out\nartifact() conversions and dependency test rules locally.\n\nChange-Id: Idbae85352a6e1621de195896efd672219a2f7ab1\n"
    },
    {
      "commit": "b38f55c7cca9953ff87cddae94426aa55c096da3",
      "tree": "34353146b43e4400864ee5e4fe970adac2e862dc",
      "parents": [
        "9bedeb9d2476439b90dd77ee01f0aee8e029d252"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Jun 09 22:52:26 2026 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Jun 20 01:56:34 2026 -0700"
      },
      "message": "Add Jenkinsfile for CI verification\n\nChange-Id: I9897c1de7af1cdc2eef8b7c4271272446549eb2d\n"
    },
    {
      "commit": "9bedeb9d2476439b90dd77ee01f0aee8e029d252",
      "tree": "ba0c31005f4dd9af5681cd595a484b4eb59b39c1",
      "parents": [
        "95217909f9b78c058f5db106c7912ac3ea45f5e1"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Jun 09 20:36:39 2026 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jun 17 08:48:29 2026 +0100"
      },
      "message": "Convert to bzlmod\n\nConvert the project bzlmod using the latest\nGerrit master definition template.\n\nCo-Authored-By: Daniele Sassoli \u003cdanielesassoli@gmail.com\u003e\nChange-Id: I490c70c0967f50f0bddbb18b1f05f0a493984428\n"
    },
    {
      "commit": "95217909f9b78c058f5db106c7912ac3ea45f5e1",
      "tree": "0b597ee415058e7e2524a6d70afab404e3934d98",
      "parents": [
        "d83fa90d3c3571b615c459cc5182c9cc915fbe13"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Jun 09 19:41:25 2026 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jun 17 08:48:29 2026 +0100"
      },
      "message": "Remove PowerMock and replace with EasyMock\n\nRemove PowerMock 2.0.9 (powermock-api-easymock, powermock-module-junit4\nand their five transitive siblings) and the javassist version pin that\nonly existed to override PowerMock\u0027s older transitive. PowerMock 2.0.9\nis the last release from 2020 and its classloader rewriting is\nincompatible with EasyMock 5\u0027s MethodHandles.Lookup-based ByteBuddy\nclass injection on Java 17+: the generated proxy lands in\norg.easymock.mocks.* but the Lookup is anchored at\norg.easymock.internal.ClassProxyFactory and the JVM refuses the\ncross-package define.\n\nPowerMock\u0027s only feature this codebase used was mockStatic on\nJgitWrapper. Convert JgitWrapper from static utility to a stateless\ninstance class so its method becomes invokevirtual on a mocked\ninstance, which plain EasyMock instance mocking handles. PathOwners\ngains a package-private 11-arg constructor that accepts the wrapper\nfor tests; the public 10-arg overloads default to a real\nnew JgitWrapper(), so all production callers in plugins/owners are\nunchanged.\n\nKeeping a single mocking framework on the test classpath was preferred\nover adopting Mockito.mockStatic on a still-static JgitWrapper.\n\nBump org.easymock:easymock to 5.6.0 for a byte-buddy that knows recent\nJDK class-file versions.\n\nCo-Authored-By: Daniele Sassoli \u003cdanielesassoli@gmail.com\u003e\nChange-Id: I5079628f6f3cde4786800e4810939e40b8a4ac48\n"
    },
    {
      "commit": "d83fa90d3c3571b615c459cc5182c9cc915fbe13",
      "tree": "1bd68d1d5ab5576d0baf9ba75e6366b8d347b98c",
      "parents": [
        "55d44d24fab66d7db2b8f42959e19bc8bb6bf11c"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Jun 09 13:46:24 2026 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jun 17 08:48:23 2026 +0100"
      },
      "message": "Initial commit\n\nChange-Id: Ic7ece4f9935492cd1ef4b1c75b08ab4363b6c27d\n"
    },
    {
      "commit": "55d44d24fab66d7db2b8f42959e19bc8bb6bf11c",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jun 17 00:34:12 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 17 00:34:12 2026 -0700"
      },
      "message": "Initial empty repository\n"
    }
  ]
}
