)]}'
{
  "log": [
    {
      "commit": "b24e742438a329214c6c5d33308174e49aff564d",
      "tree": "1c0c1608f371340caefe881322ff14eb96f8f020",
      "parents": [
        "435b6670a00e317ffcb9a1b3889a7ed289192edb"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Oct 03 09:35:29 2025 -0700"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Oct 03 09:36:33 2025 -0700"
      },
      "message": "Add deprecation notice\n\nChange-Id: Ie0209529fc56a2dc694a97b9e0c7dd7a2ae95e8b\n"
    },
    {
      "commit": "435b6670a00e317ffcb9a1b3889a7ed289192edb",
      "tree": "901ec332b32fbd125847370f0ff28e694af49fdd",
      "parents": [
        "8c09fce1d02a746f1ef39f5b60dba40dbd212eb6"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri Sep 19 12:53:18 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Sep 22 06:16:35 2025 -0700"
      },
      "message": "Fix misleading error on project import quota violation\n\nPreviously, when a project import failed during the GitCloneStep, the\nerror handling logic assumed that all `ResourceConflictException`s\nindicated the repository already existed. This led to incorrect error\nmessages being shown to users, even when the actual cause was unrelated.\n\nThis patch removes the special handling for `ResourceConflictException`\nand instead exposes the full underlying message from the\n`RestApiException`. As a result, users now receive accurate feedback,\nfor example, when import fails due to exceeding the `maxProjects` quota\nin a namespace.\n\nImproves user experience by providing correct diagnostics for import\nfailures, aiding in quicker debugging and resolution.\n\nBug: Issue 445765274\nChange-Id: I7ab32c23140288b3c259d4b8e5fcb3135f14ce7c\n"
    },
    {
      "commit": "8c09fce1d02a746f1ef39f5b60dba40dbd212eb6",
      "tree": "b30711fb6e2f4fb98dbbcc23eddc84f7ccd74d37",
      "parents": [
        "048a68f3b2a3cbbacc215a888ef9dde5f2f63360"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Thu Sep 18 16:43:20 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Sep 22 15:15:53 2025 +0200"
      },
      "message": "Honor repo size quota enforcer during project import\n\nImports from GitHub did not consult repository-size quota enforcers,\nallowing projects that exceeded configured limits to proceed, leading to\nquota violations.\n\nIntroduce a preflight quota check to enforce limits early:\n* Add `QuotaCheckStep`, which fetches the GitHub repository size and\n  performs a `QuotaBackend` dry-run against `REPOSITORY_SIZE_GROUP`,\nfailing on error.\n* Wire the step via Guice and `GitImporter`, placing it before clone,\n  project creation so we fail fast with a clear error.\n* Add `QuotaEnforcedException` for consistent, user-friendly error\n  reporting when quota blocks an import.\n\nWhen quotas allow, the import flow is unchanged. This ensures project\nimports respect site policies rather than exceeding quota size limits.\n\nBug: Issue 445826646\nChange-Id: I2ad8d35fac57581fc5e8fbc25134e0fdb90f52ab\n"
    },
    {
      "commit": "048a68f3b2a3cbbacc215a888ef9dde5f2f63360",
      "tree": "52d3bad9c1ba24853aa0d326d0c46c71f7eedb6b",
      "parents": [
        "5494f929be6d9b0b54ac40a44d8c956bf4757306"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Sep 02 07:59:01 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Sep 02 07:59:01 2025 +0100"
      },
      "message": "Amend the addition of external-ids to the latest master version\n\nChange-Id: I44a141dc18c2f5097b3ca833b2e51334cbbaa1e7\n"
    },
    {
      "commit": "5494f929be6d9b0b54ac40a44d8c956bf4757306",
      "tree": "5d336375871b294622efe9cba8436a100d497cac",
      "parents": [
        "dd52f958f13afdee670e34864949a9c23173966d"
      ],
      "author": {
        "name": "Paladox none",
        "email": "thomasmulhall410@yahoo.com",
        "time": "Sun Jul 20 06:44:37 2025 -0700"
      },
      "committer": {
        "name": "Paladox none",
        "email": "thomasmulhall410@yahoo.com",
        "time": "Sun Jul 20 06:45:27 2025 -0700"
      },
      "message": "Migrate .eslintrc.js to eslint.config.js\n\nChange-Id: I49980b6d14a45846630cdc99e208086ac84626ae\n"
    },
    {
      "commit": "dd52f958f13afdee670e34864949a9c23173966d",
      "tree": "b94b79d199895e36150a3f251c3c6bab620796b2",
      "parents": [
        "0aa142942bf733652b9fc419386cb00105296449"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Feb 11 22:51:23 2025 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Feb 11 22:51:23 2025 +0000"
      },
      "message": "Use patchSetInserter.disableValidation() when importing pull-requests\n\nThe master branch removed the patchSetInserter.setValidate(false)\nin favour of batter named patchSetInserter.disableValidation().\n\nChange-Id: I1c808eeee503f53a20640470f0b0351c054b09fa\n"
    },
    {
      "commit": "0aa142942bf733652b9fc419386cb00105296449",
      "tree": "e8f248f4a13309373216b2726ea7a6a4c273aae6",
      "parents": [
        "5129b6b338c96df79e3eb7eed529f2d0792dc927"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sun Jun 30 12:28:08 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sun Jun 30 12:43:42 2024 +0100"
      },
      "message": "Use Java record-style methods for accessing Scope\n\nThe introduction of the Java 17 record type for Scope\nwith I979fbfe27 has caused incompatiblity with the current\nVelocity templates because the fields are now accessible\nas methods.\n\nAdapt the Velocity template calls in scope.html to resume\nthe current scopes selection functionality.\n\nAlso create the missing getter for the Scope enum in\nOAuthProtocol for allowing Velocity to access it.\n\nChange-Id: I8f6e404c4a3f401deafa25061c1749028319e5b4\n"
    },
    {
      "commit": "5129b6b338c96df79e3eb7eed529f2d0792dc927",
      "tree": "5a5672043d195996411a4ca3578470816635ebfb",
      "parents": [
        "374ddf9612eb8898a67c0c721bb37c5144222381"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 21 22:13:41 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 21 22:13:41 2024 +0100"
      },
      "message": "Remove generation of the version file\n\nThe github-pugin.jar-version is generated automatically\nfrom the Gerrit-CI\u0027s jobs and should not be created by\nthe plugin\u0027s Bazel build.\n\nChange-Id: I262146669b089efe755e48f2a0cbb39d790d5dca\n"
    },
    {
      "commit": "374ddf9612eb8898a67c0c721bb37c5144222381",
      "tree": "10e81a23697cc9384513b7517a62fb6ddcbe30be",
      "parents": [
        "40ef0cb1cef5771b880b0c72e51771812137436a"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jun 19 18:23:03 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jun 19 18:02:25 2024 +0000"
      },
      "message": "Fix accidental overwrite of existing url and push specs\n\nWhen importing additional repositories on an existing organisation,\nthe GitHub plugin preserves the legacy \u0027url\u0027 and \u0027push\u0027 specs\nfor allowing custom ad-hoc settings, such as the use of stable SSH\nkeys for replication or more restrictive push specs.\n\nThe abstraction of the replication configuration update implemented\nwith I9bde7e1148 has accidental broken the current behaviour causing\na regression in how the remotes are configured.\n\nReintroduce the correct behaviour by reading the existing config\nwhen updating a remote and avoid overwriting the url and push\nreplication settings.\n\nChange-Id: Idd7113f6c0549d752b1dd31bf52d960aee1f77b1\n"
    },
    {
      "commit": "40ef0cb1cef5771b880b0c72e51771812137436a",
      "tree": "32cc5fd0bd145a66e3d5abcc54783bb43824b5cf",
      "parents": [
        "87a8a38e62c43dddeca150a8a2e5b400250032d7"
      ],
      "author": {
        "name": "Dariusz Luksza",
        "email": "dariusz.luksza@gmail.com",
        "time": "Wed Mar 13 14:16:50 2024 +0000"
      },
      "committer": {
        "name": "Dariusz Luksza",
        "email": "dariusz.luksza@gmail.com",
        "time": "Wed Jun 19 16:48:17 2024 +0100"
      },
      "message": "Use replication plugin API to update and access its config\n\nInstead of directly modifying the replication plugin configuration files\nin the `$site_path/etc` directory use new API. This guarantee that the\nconfiguration will be stored and read in a correct format and location.\n\nBug: Issue 325000746\nChange-Id: I9bde7e1148d932fb6861f51edb3521449ec20bef\n"
    },
    {
      "commit": "87a8a38e62c43dddeca150a8a2e5b400250032d7",
      "tree": "9e8b67b14ffcf136cc4ef427d3bb7ef6247dc8b2",
      "parents": [
        "06bcc598095c83414def92911dc1f27f6a32dcbf"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Jun 18 00:15:48 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jun 19 12:40:56 2024 +0100"
      },
      "message": "Introduce default github build target\n\nAll plugins are expected to have a main build target\nhaving the same name as the plugin\u0027s directory.\n\nIntroduce the \u0027github\u0027 plugin which is the main node\nof the dependency of all other targets, including the one\nresponsible for extracting the plugin\u0027s version into a version\nfile.\n\nChange-Id: I9fb3694e5fb2c4cbf0455d54281ee2677429d16f\n"
    },
    {
      "commit": "06bcc598095c83414def92911dc1f27f6a32dcbf",
      "tree": "6905316111568d46ffd19a38051c995326ad6036",
      "parents": [
        "cc49e2c8cf1393788413721c385d952456084417"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 14 22:29:57 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Jun 15 08:22:56 2024 +0000"
      },
      "message": "Set explicit top-level targets for Bazel build\n\nDefine at the top-level BUILD the two targets that\nthe build process should generate and move them\nfrom their inner project top the top-level directory\nso that becomes easier to archive them from the CI\nwith the correct expected names:\n- github-oauth.jar\n- github-plugin.jar\n\nChange-Id: Ie1fca005e9c13912f42b6a989798f48054a292c6\n"
    },
    {
      "commit": "cc49e2c8cf1393788413721c385d952456084417",
      "tree": "ac59cc1639a0685612cf40867dfd3c8d2a9aa6a0",
      "parents": [
        "2c49fead8571cbdf4b22d5e7f77db3f70ac45e1e"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 14 15:56:23 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 14 20:21:19 2024 +0000"
      },
      "message": "Add Jenkinsfile for incoming changes validation\n\nChange-Id: Ibdc33c23daf27c4bf4e0b6b3641cba30d12676ca\n"
    },
    {
      "commit": "2c49fead8571cbdf4b22d5e7f77db3f70ac45e1e",
      "tree": "52a03db54ead674f1660a5229a8ca1b2b7aa01f4",
      "parents": [
        "6c2adb0e71c8abbac4b3b33835e995f9dd345b9e"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 14 16:43:22 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 14 20:21:19 2024 +0000"
      },
      "message": "Reformat with GJF 1.22.0\n\nChange-Id: I9dd62131dcf6f90b8dd03c2c8c093311efbf85d5\n"
    },
    {
      "commit": "6c2adb0e71c8abbac4b3b33835e995f9dd345b9e",
      "tree": "190db6eadcaa09e39128c70780157d4bacf55c79",
      "parents": [
        "b9c96df64154840fe72910cf213f2a18e7420b91"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 14 15:24:34 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 14 20:21:19 2024 +0000"
      },
      "message": "Remove Maven build\n\nThe github plugin is now fully converted to Bazel and\nthe Maven build isn\u0027t required anymore.\n\nChange-Id: I876278c6f45fe11353e2cd21b9b9440b7baa06cb\n"
    },
    {
      "commit": "b9c96df64154840fe72910cf213f2a18e7420b91",
      "tree": "95179249800f5d98119e3646fa20e2221a05d7fb",
      "parents": [
        "bf3124976fbf3d72e662f1e19bc00c37db65e45c"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Apr 01 15:08:30 2024 +0200"
      },
      "committer": {
        "name": "Marcin Czech",
        "email": "maczech@gmail.com",
        "time": "Fri Jun 14 20:19:52 2024 +0000"
      },
      "message": "Add Bazel build\n\nThis change adds Bazel build. Frontend build is not addressed in this\nchange.\n\nOne complication is the usage of lombok library, that has a known issue\nwith bazel Turbine processor.  Add a workaround to disable running\nTurbine processor for related dependencies.\n\nThe plugin is split in two different artifacts: github-oauth library\nand github-plugin.\n\nTEST PLAN:\n\nClone the plugin into gerrit\u0027s plugins directory.\n\nCopy plugin\u0027s own external_plugin_deps.bzl into gerrit\u0027s plugins\ndirectory.\n\nTo build the github-oauth library run:\n\n  $\u003e bazel build \\\n     plugins/github/github-oauth:github-oauth_deploy.jar\n\nTo build the github-plugin run:\n\n  $\u003e bazel build plugins/github/github-plugin\n\nTo run the tests:\n\n  $\u003e bazel test plugins/github/...\n\nFeature: Issue 10271\nChange-Id: I21e90d50f0a4db36a74a0c34123b3da6c0ec28da\n"
    },
    {
      "commit": "bf3124976fbf3d72e662f1e19bc00c37db65e45c",
      "tree": "2c2e5b84adf2da2f502c4072e799a92195d5309d",
      "parents": [
        "d26c807afe65247e861958b1c8b0cc9818d6535a"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jun 13 22:13:03 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jun 13 22:14:27 2024 +0100"
      },
      "message": "Replace Lombok Getter with getX() methods on GitHubGroup\n\nThe GitHubGroup is a base class of all groups implemented\nin the GitHub plugin and the extra boilerplate generated\nby removing Lombok usage is limited and justified.\n\nChange-Id: I9c6f5f42df88741d23f7c8a551952ebb343cf055\n"
    },
    {
      "commit": "d26c807afe65247e861958b1c8b0cc9818d6535a",
      "tree": "dd8a6306dd159f631ecfe9c4196ee5bb42dd7f45",
      "parents": [
        "440c5655801541f26a7b248090552aba1b53656c"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jun 13 22:02:04 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jun 13 22:03:05 2024 +0100"
      },
      "message": "Expose GitHubOAuthConfig.getVirtualScopes as static method\n\nAvoid the use of Lombok\u0027s getter for calculating the virtual scopes\nbut expose the method for extracting them from config as a\npackage-protected static method.\n\nChange-Id: I68b53e000009564785c87027c634215d4c264d0c\n"
    },
    {
      "commit": "440c5655801541f26a7b248090552aba1b53656c",
      "tree": "4e331ff9a92ccd8e0bef8923f015a39e116f90ce",
      "parents": [
        "210329e9f2e4255ad9c649fc4f16e104c5312bd4"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jun 13 21:51:41 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jun 13 21:51:41 2024 +0100"
      },
      "message": "Expose GitHubUser fields as public final\n\nThe GitHubUser fields are final and can be safely exposed\nas public final fields, without having to use Lombok\nGetter.\n\nChange-Id: Ief0a4151669c1f86025051141990eb05569a3c82\n"
    },
    {
      "commit": "210329e9f2e4255ad9c649fc4f16e104c5312bd4",
      "tree": "9b757d8a32c88584f250a5dbed5f0afa1f0a0e4e",
      "parents": [
        "a5354e53b296d34260c881d95475822dc0a12ce3"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jun 13 21:41:18 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jun 13 21:41:18 2024 +0100"
      },
      "message": "Replace Getter with public final Scope fields\n\nThe Scope enum can safely expose its details as\npublic final fields without having to use Lombok\nto generate getters that are totally redundant in\nthis Enum type.\n\nChange-Id: If3480330f67c879344aeae342065149da9199de6\n"
    },
    {
      "commit": "a5354e53b296d34260c881d95475822dc0a12ce3",
      "tree": "8e077209a79b3b7500fa4895c5a0c873dfc5ac8e",
      "parents": [
        "12c9e4e54233262a771a3b4dd44874c8235dbab9"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jun 13 21:35:03 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jun 13 21:36:26 2024 +0100"
      },
      "message": "Simplify usage of AccessToken getter\n\nRemove the getter of the AccessToken object\nusing Lombok and replace it with a simpler getter\nof the accessToken string value as it was\neffectively needed throughout the code.\n\nThe OAuth cache keeps the AccessToken object for\nbackward compatibility.\n\nChange-Id: I8190618d9f205a8945463dbdfc7e0d777d5ecdd9\n"
    },
    {
      "commit": "12c9e4e54233262a771a3b4dd44874c8235dbab9",
      "tree": "a718fdc2dc80c0e2bf1bb30c624fe6834faacf7d",
      "parents": [
        "dd7254afbb8b01d7a38f557da3091926136bbda1"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Wed Apr 03 06:36:14 2024 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Wed Apr 03 06:47:44 2024 +0200"
      },
      "message": "ScopeKey: Replace lombok annotation with record type\n\nRecord classes: [1] were introduced in Java 14 as a preview feature\nand were finalized in Java 17.\n\nGiven that the compiler level was changed to Java 17 in the latest\nGerrit releases per default use Java 17 language feature as a\nreplacement for lombok annotation processor.\n\nNote to the tool support: This plugin and gerrit core itself is using\ngoogle-java-format to automatically format Java code. Unfortunately the\ncurrently used gjf verion 1.7 is outdated and doesn\u0027t support record\nclasses. Therefore, a new version should be used to re-format reocrd\nclasses, e.g. v1.22.0: [2].\n\n[1] https://docs.oracle.com/javase/specs/jls/se17/html/jls-8.html#jls-8.10\n[2] https://github.com/google/google-java-format/releases/tag/v1.22.0\n\nChange-Id: I979fbfe27ee68a1a7315103e90593c5278e4341d\n"
    },
    {
      "commit": "dd7254afbb8b01d7a38f557da3091926136bbda1",
      "tree": "509925e236cbc23e86d5b8f2489f03e8f4d94ce1",
      "parents": [
        "46ac50766da17a9b94f7e9f3ed9fb2c4ef9f6cf4",
        "87594309be03aa404a40053a540e37213b3334c7"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Wed Apr 03 06:11:59 2024 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Wed Apr 03 06:12:24 2024 +0200"
      },
      "message": "Merge branch \u0027stable-3.9\u0027\n\n* stable-3.9:\n  GitHubOAuthConfigTest: Reformat the code using google-java-format\n  Build github plugin against the v3.8.0-rc5 Gerrit API\n  PullRequestCreateChange: Remove unused import\n  Fix velocity deprecated configuration keys\n  Set plugin version to 3.4.7\n  Fire git ref update events for all imported refs\n  PluginVelocityRuntimeProvider: Fix warning flagged by error prone\n  Fix default scopes resolution\n\nChange-Id: I3f3f559c70378003766916bbf70e8173c3c89109\n"
    },
    {
      "commit": "87594309be03aa404a40053a540e37213b3334c7",
      "tree": "174cbe4091cc0f54c75bfc269a3ec2e5ca99aca8",
      "parents": [
        "a08b878f6df4bdaf787ef19f2b040cbdfe0404fc",
        "f9366abd8e0d7b31340ebd21e2c07227ffe89fa3"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Wed Apr 03 06:10:47 2024 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Wed Apr 03 06:10:56 2024 +0200"
      },
      "message": "Merge branch \u0027stable-3.8\u0027 into stable-3.9\n\n* stable-3.8:\n  GitHubOAuthConfigTest: Reformat the code using google-java-format\n  Build github plugin against the v3.8.0-rc5 Gerrit API\n  PullRequestCreateChange: Remove unused import\n  Set plugin version to 3.4.7\n  Fire git ref update events for all imported refs\n  PluginVelocityRuntimeProvider: Fix warning flagged by error prone\n  Fix default scopes resolution\n\nChange-Id: Ifd589f9099f27ad59790e44f4cbca3f39327a767\n"
    },
    {
      "commit": "f9366abd8e0d7b31340ebd21e2c07227ffe89fa3",
      "tree": "13a164549dc3f28b25969a78172ec8a8a8b893dc",
      "parents": [
        "ab041153686c52efba18362078e594170c05c3c7"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Apr 01 15:56:08 2024 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Wed Apr 03 06:09:18 2024 +0200"
      },
      "message": "GitHubOAuthConfigTest: Reformat the code using google-java-format\n\nChange-Id: I29cfbd4dc165d2f0bdd5f4601db2e858ca911201\n"
    },
    {
      "commit": "ab041153686c52efba18362078e594170c05c3c7",
      "tree": "2cd05e280febd8a39e79c24e35035c5b55d2c8e8",
      "parents": [
        "3eb36725ab9f12097b3cdf3c3aed72472c72a252",
        "318c10245f6a15a0ed586bbec849ace36ba250f4"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Wed Apr 03 05:59:56 2024 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Wed Apr 03 06:00:17 2024 +0200"
      },
      "message": "Merge branch \u0027stable-3.7\u0027 into stable-3.8\n\n* stable-3.7:\n  Build github plugin against the v3.8.0-rc5 Gerrit API\n  PullRequestCreateChange: Remove unused import\n  Set plugin version to 3.4.7\n  Fire git ref update events for all imported refs\n  PluginVelocityRuntimeProvider: Fix warning flagged by error prone\n  Fix default scopes resolution\n\nChange-Id: I591fab2887c286b7e170dcf140a222cb9b472651\n"
    },
    {
      "commit": "318c10245f6a15a0ed586bbec849ace36ba250f4",
      "tree": "d986af688ded8404824548000093b28a556d8046",
      "parents": [
        "f4cff124f69849f99ad0d5ea3c5f13b1d82a6c4d",
        "f94f63b0f366858e2069bb373582234dc842e72b"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Apr 01 15:52:54 2024 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Apr 02 23:49:44 2024 +0000"
      },
      "message": "Merge branch \u0027stable-3.6\u0027 into stable-3.7\n\n* stable-3.6:\n  PullRequestCreateChange: Remove unused import\n  Set plugin version to 3.4.7\n  Fire git ref update events for all imported refs\n  PluginVelocityRuntimeProvider: Fix warning flagged by error prone\n  Fix default scopes resolution\n\nChange-Id: Ia574c521bbe3a65a882b766dc39920acd836df6b\n"
    },
    {
      "commit": "f4cff124f69849f99ad0d5ea3c5f13b1d82a6c4d",
      "tree": "fbe7a392c1bec11f3d4584e5d3a4deefc5794015",
      "parents": [
        "fc300359dc83f6256bceeb2f702908e749e2aea1"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Mon May 15 08:10:46 2023 +0200"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Apr 02 23:46:04 2024 +0000"
      },
      "message": "Build github plugin against the v3.8.0-rc5 Gerrit API\n\nThis is needed for adapting the ProgressMonitor API changes that have been\nintroduced in stable-3.7 following an incompatible JGit bump in a stable\nrelease.\n\nChange-Id: Ib2603895e4e836f4b748bef3e55a4045a30fbb36\n(cherry picked from commit 7f59f90d245d8943d1bd158047370e9883d1b024)\n"
    },
    {
      "commit": "f94f63b0f366858e2069bb373582234dc842e72b",
      "tree": "6058fcb4d5489dcd49843415a9a45e391246a4fd",
      "parents": [
        "c9cd50c7ca70c7cc0320ef304ff5fae548494c46"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Apr 01 15:50:15 2024 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Apr 01 15:50:31 2024 +0200"
      },
      "message": "PullRequestCreateChange: Remove unused import\n\nAlso reformat the code using google-java-format version 1.7.\n\nChange-Id: I9123a5f6ffb34e39d50a1d70be1e6d32ea0bc30e\n"
    },
    {
      "commit": "c9cd50c7ca70c7cc0320ef304ff5fae548494c46",
      "tree": "14ab248c108c601a84840b7ad808c0947551747c",
      "parents": [
        "dd7f51426473ac616b184512713e8253440fe5ec",
        "b7f9edb7229c93a929681ab04e99594041bdebd6"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Apr 01 15:34:13 2024 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Apr 01 15:34:13 2024 +0200"
      },
      "message": "Merge branch \u0027stable-3.5\u0027 into stable-3.6\n\n* stable-3.5:\n  Set plugin version to 3.4.7\n  Fire git ref update events for all imported refs\n  PluginVelocityRuntimeProvider: Fix warning flagged by error prone\n  Fix default scopes resolution\n\nChange-Id: I8e937f978898fa9ef806eec81758b07435b21439\n"
    },
    {
      "commit": "b7f9edb7229c93a929681ab04e99594041bdebd6",
      "tree": "c66ce184be66edb3a0060f4be4cadba62ce742d4",
      "parents": [
        "4bc64b9883c590db258d4b2cdb06f9d3a1ba6038",
        "b6684ade22dfe8e351a1b31c50ca56f433df76be"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Apr 01 15:20:31 2024 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Apr 01 15:33:56 2024 +0200"
      },
      "message": "Merge branch \u0027stable-3.4\u0027 into stable-3.5\n\n* stable-3.4:\n  Set plugin version to 3.4.7\n  Fire git ref update events for all imported refs\n  PluginVelocityRuntimeProvider: Fix warning flagged by error prone\n  Fix default scopes resolution\n\nChange-Id: Ida702ab138d136e9ef6d65ad1e06af0611a86c32\n"
    },
    {
      "commit": "b6684ade22dfe8e351a1b31c50ca56f433df76be",
      "tree": "814d0062414b65b57a3b4f198067ec9e59631dc2",
      "parents": [
        "4568fb8d2cc7743d50ceb7124c1f3ae16a8e5836",
        "a2886a6e8d6277c0b450df067d406b971e3a9c8c"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Apr 01 15:15:52 2024 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Apr 01 15:15:52 2024 +0200"
      },
      "message": "Merge branch \u0027stable-3.3\u0027 into stable-3.4\n\n* stable-3.3:\n  Fire git ref update events for all imported refs\n  PluginVelocityRuntimeProvider: Fix warning flagged by error prone\n  Fix default scopes resolution\n\nChange-Id: If110336e60b45a7f3dbc877074a127c36e783a85\n"
    },
    {
      "commit": "a2886a6e8d6277c0b450df067d406b971e3a9c8c",
      "tree": "1c12edd51ea8c22fed512e1dcf4ca3abae64a0fd",
      "parents": [
        "ffe600937205d7b8c256c7b451d659927d158996",
        "9e0e5d656a1e887c3237b8ffe7df3748a07ccdaf"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Apr 01 15:15:42 2024 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Apr 01 15:15:42 2024 +0200"
      },
      "message": "Merge branch \u0027stable-3.2\u0027 into stable-3.3\n\n* stable-3.2:\n  Fire git ref update events for all imported refs\n  PluginVelocityRuntimeProvider: Fix warning flagged by error prone\n  Fix default scopes resolution\n\nChange-Id: Iac53babcc66830acf0375a110cd5371eabdf9c9e\n"
    },
    {
      "commit": "9e0e5d656a1e887c3237b8ffe7df3748a07ccdaf",
      "tree": "c04bcc305afe94113e1c0af17f6d1ab62d84e260",
      "parents": [
        "b661ffdaf0a8e86a7b6a28104601bc9562c93b80",
        "ae847f5f6bb0d63a215481686c8250b560b0cd40"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Apr 01 15:14:45 2024 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Apr 01 15:14:45 2024 +0200"
      },
      "message": "Merge branch \u0027stable-3.1\u0027 into stable-3.2\n\n* stable-3.1:\n  Fire git ref update events for all imported refs\n  PluginVelocityRuntimeProvider: Fix warning flagged by error prone\n  Fix default scopes resolution\n\nChange-Id: I3fe3827761e64f3ced738f9bb6fdebda66aa506f\n"
    },
    {
      "commit": "a08b878f6df4bdaf787ef19f2b040cbdfe0404fc",
      "tree": "eccc866bb033093e7af77e0320cfbfdc59fd07e0",
      "parents": [
        "d77146c5e0a6a08baa631a92b283b0bb5905f4ea",
        "5ead64132961bf1a1650138397cfc0cc6f6259cd"
      ],
      "author": {
        "name": "Dariusz Łuksza",
        "email": "dariusz.luksza@gmail.com",
        "time": "Sat Mar 02 07:51:02 2024 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Mar 02 07:51:02 2024 +0000"
      },
      "message": "Merge \"Fix velocity deprecated configuration keys\" into stable-3.9"
    },
    {
      "commit": "46ac50766da17a9b94f7e9f3ed9fb2c4ef9f6cf4",
      "tree": "2a994c48ffeb777f2d9d46641b9984e3d66c925f",
      "parents": [
        "22e3dcbf193b3cc3f72785749f3775b95fc24c40"
      ],
      "author": {
        "name": "Dariusz Luksza",
        "email": "dariusz.luksza@gmail.com",
        "time": "Mon Feb 26 11:07:20 2024 +0000"
      },
      "committer": {
        "name": "Dariusz Luksza",
        "email": "dariusz.luksza@gmail.com",
        "time": "Fri Mar 01 12:15:53 2024 +0000"
      },
      "message": "Add missing semicolons in TypeScript\n\nSemicolons in TypeScript are note required, but for consistency with the\nmajority of lines in `gr-github-oauth-progress.ts` three semicolons were\nadded.\n\nChange-Id: Ic33bba8456606bd150e1dbd649df8b7e158b36b3\n"
    },
    {
      "commit": "22e3dcbf193b3cc3f72785749f3775b95fc24c40",
      "tree": "aeae2491dff1762cd48433bb3f68e0821eef667a",
      "parents": [
        "cb6e282b38b54ed0d2070559c3d09658d6fc60cb"
      ],
      "author": {
        "name": "Dariusz Luksza",
        "email": "dariusz.luksza@gmail.com",
        "time": "Mon Feb 26 10:44:00 2024 +0000"
      },
      "committer": {
        "name": "Dariusz Luksza",
        "email": "dariusz.luksza@gmail.com",
        "time": "Fri Mar 01 12:15:03 2024 +0000"
      },
      "message": "Redirect user to previously visited page after login\n\nWhen a user logs in from any page, it expectes to be back on the same\npage after the successful login. Gerrit\u0027s `/login` endpoint already\nsupports redirecting to the previously visited page, but that\ninformation was not forwarded from the frontend.\n\nTo update the `href` in the login URL, we need to subscribe for\n`nav-report` events. But as the event is emitted, before\n`window.location` is updated, we also need to delay reading of the\ncurrent browser URL, until all other events are processed. This way, by\nusing `setTimeout`, we can reliably update the login link `href`.\n\nBut: Issue 325838103\nChange-Id: Icc6498b48fac011a2bc2e92700ff216d781eb993\n"
    },
    {
      "commit": "cb6e282b38b54ed0d2070559c3d09658d6fc60cb",
      "tree": "ed48a6a73b7abbdcfba84fdf5adca48cc1f64d0d",
      "parents": [
        "6824c0a9206df32e8c0da3e022060134a4c8b097",
        "d77146c5e0a6a08baa631a92b283b0bb5905f4ea"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Dec 30 00:37:48 2023 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Dec 30 00:37:48 2023 +0000"
      },
      "message": "Merge branch \u0027stable-3.9\u0027\n\n* stable-3.9:\n  Fallback to public organization information\n  Redirect to login on anonymous access to profile pages\n  Detect the default branch during the repo import from GitHub\n  Bump plugin and Gerrit to v3.9.0-rc5\n  Do not import changes refs from GitHub\n  Bump to v3.9.0-rc4 and reuse FakeHttpServletRequest/Response\n  Refresh GitHub groups upon Gerrit successful login\n\nChange-Id: I8242d270b9e5ff0ca8e221d0b426a337e7710c12\n"
    },
    {
      "commit": "d77146c5e0a6a08baa631a92b283b0bb5905f4ea",
      "tree": "ed48a6a73b7abbdcfba84fdf5adca48cc1f64d0d",
      "parents": [
        "43bb3b702e5a85b1b2ba8b7ed3aa2ab0523a9c5e"
      ],
      "author": {
        "name": "Dariusz Luksza",
        "email": "dariusz.luksza@gmail.com",
        "time": "Wed Dec 13 14:50:13 2023 +0000"
      },
      "committer": {
        "name": "Dariusz Luksza",
        "email": "dariusz.luksza@gmail.com",
        "time": "Wed Dec 13 15:16:37 2023 +0000"
      },
      "message": "Fallback to public organization information\n\nGitHub uses various access scopes for its REST API and users can\nchoose how much information they allow to access for the integrations.\nThe narrowest scope is `USER_EMAILl`, which grants only access to the\nuser\u0027s email address. It\u0027s important to note that the _Reviewer_ scope\non eclipse.gerrithub.io and review.gerrithub.io is only asking for\naccess to the email address.\n\nTo give users proper permissions in Gerrit we load information about\nuser teams and organizations. To read those GitHub requires one of\ntwo scopes `org:read` or `user`. None of those are included in the\n_Reviewer_ scope. Which led to an exception being thrown.\n\nAs we access organizations and teams API\u0027s from a cache loader, getting\nan exception meant that the value for the given user was never stored.\nThis then means that each call to user group membership would result in\nyet another attempt to load a cache entry and yet another exception. In\nthe end group membership cache for a user with scope _Reviewer_ will\nnever be computed. Which will result in poor page load time.\n\nWe already have a mitigation mechanism in place, that would fall to\n\"public organizations\" only, when teams cannot be accessed.\nUnfortunately, the GitHub REST API endpoint for \"public organizations\",\nwas still requiring \"org:read\" or \"user\" scopes. This means that for the\n_Reviewer_ scope this fallback never worked.\n\nThis change adds another fallback, this time to the real \"public\norganizations\" endpoint that doesn\u0027t require additional scopes. It also\nensures that we never use `getMyOrganizations()` call directly but\nalways go through the fallback route.\n\nBug: Issue 40014763\nChange-Id: I9647b9a1b6e30547f7780c785de37aa6ceb8001d\n"
    },
    {
      "commit": "5ead64132961bf1a1650138397cfc0cc6f6259cd",
      "tree": "92d71d3d50c4c5b1c52c4c66c9946edd0803b804",
      "parents": [
        "43bb3b702e5a85b1b2ba8b7ed3aa2ab0523a9c5e"
      ],
      "author": {
        "name": "Dariusz Luksza",
        "email": "dariusz.luksza@gmail.com",
        "time": "Wed Dec 13 13:07:19 2023 +0000"
      },
      "committer": {
        "name": "Dariusz Luksza",
        "email": "dariusz.luksza@gmail.com",
        "time": "Wed Dec 13 15:15:28 2023 +0000"
      },
      "message": "Fix velocity deprecated configuration keys\n\nAll of the Velocity configuration keys used in\n`PluginVelocityRuntimeProvider` are now marked as deprecated and were\nproducing warnings when plugin was starting.\n\nThis is replacing the deprecated keys with their new versions.\n\nChange-Id: If62af6098a7db367e2ced41f92974f9a3d734050\n"
    },
    {
      "commit": "43bb3b702e5a85b1b2ba8b7ed3aa2ab0523a9c5e",
      "tree": "f5ec708724eaf2f351d576a09b6a11e08c38b45e",
      "parents": [
        "488e479f9778af8666a5d0b57067ae0aa07256dc"
      ],
      "author": {
        "name": "Dariusz Luksza",
        "email": "dariusz.luksza@gmail.com",
        "time": "Tue Nov 21 10:58:55 2023 +0000"
      },
      "committer": {
        "name": "Dariusz Luksza",
        "email": "dariusz.luksza@gmail.com",
        "time": "Tue Nov 21 15:19:47 2023 +0000"
      },
      "message": "Redirect to login on anonymous access to profile pages\n\nWhen an unauthorized session tries to access any of the profile pages,\nserver will return status code 500 and a generic \"Server Error\" page\nwill be rendered. Instead, user should be redirected to the login page.\n\nTo fix this we simply check if user is authorized in\n`VelocityViewServlet` and if not, redirect to the `auth.loginUrl`.\n\nBug: Issue 311627062\nChange-Id: I3264f50500733e277ef10ca1a2ff36287f89fc99\n"
    },
    {
      "commit": "488e479f9778af8666a5d0b57067ae0aa07256dc",
      "tree": "0d03e63b26a71e9e6c215b40d4425f29c2cd247e",
      "parents": [
        "97ec6ed8e1714fc6f8fee84ee9e8829e70b64e1b"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Sat Nov 18 09:21:18 2023 +0100"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Sat Nov 18 18:31:16 2023 +0100"
      },
      "message": "Detect the default branch during the repo import from GitHub\n\nWhen GitHub repo is being imported the default branch is detected and in\ncase it is not set it falls back to `master`.\n\nBug: Issue 40014935\nChange-Id: If6c0cfbc6e0bbd5f26d97407305e03a24a190dd0\n"
    },
    {
      "commit": "97ec6ed8e1714fc6f8fee84ee9e8829e70b64e1b",
      "tree": "1625f984811c1395b27a23bc969a97c72eeb4a84",
      "parents": [
        "922696c233cca6f3f368975bf9394efe50896f34"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Nov 17 19:54:58 2023 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Nov 17 19:54:58 2023 +0000"
      },
      "message": "Bump plugin and Gerrit to v3.9.0-rc5\n\nChange-Id: If5874006f2c17cedb1e7537daf36f4a3b0e3c721\n"
    },
    {
      "commit": "922696c233cca6f3f368975bf9394efe50896f34",
      "tree": "27069e2fac0291acdd3748f02f992cdd9d558cca",
      "parents": [
        "6239163808007d38ffb3dc0a8c9100964eeee9f2"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Fri Nov 17 09:05:38 2023 +0100"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Fri Nov 17 09:20:45 2023 +0100"
      },
      "message": "Do not import changes refs from GitHub\n\nImporting changes refs may result in unexpected behaviour (especially\nwhen they come from different Gerrit server) therefore they should be\nexcluded from the clone.\n\nBug: Issue 40014491\nChange-Id: Iaec0505b67b19a0c04fcbda7a1785af50fc7c5fb\n"
    },
    {
      "commit": "6239163808007d38ffb3dc0a8c9100964eeee9f2",
      "tree": "bc22a900f801492c125850314ba7b26bc1dadf38",
      "parents": [
        "812ab6255e73e9053241fe85a116b6d5a73cd864"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Nov 09 21:28:38 2023 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Nov 11 13:29:14 2023 +0000"
      },
      "message": "Bump to v3.9.0-rc4 and reuse FakeHttpServletRequest/Response\n\nBump to v3.9.0-rc4 and reuse Gerrit\u0027s FakeHttpServletRequest/Response\nfrom its acceptance framework.\nRemove the duplicated copy in the plugin and the ad-hoc\nimplementation tailored to the tests.\n\nChange-Id: Id86945fcede1ba5beb1ccd08b4e944c2bc621be9\n"
    },
    {
      "commit": "812ab6255e73e9053241fe85a116b6d5a73cd864",
      "tree": "ed3a8333a3135055b58dc1d2daffff620b90ea21",
      "parents": [
        "c438c579480502708b77d6a9e38833f52232aec9"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Nov 09 00:58:44 2023 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Nov 09 19:00:29 2023 +0000"
      },
      "message": "Refresh GitHub groups upon Gerrit successful login\n\nGitHub groups are cached and persisted on disk, for preventing\nGitHub outages to impact Gerrit Code Review. The persistent cache may\nhowever cause security and inconsistency issues with the original\ncopy of the groups and memebership on GitHub.\n\nMake sure that groups are refreshed every time a user is logging\non Gerrit Code Review UI successfully.\n\nNOTE: Git/HTTP is excluded because it could lead to bursts of\nGitHub APIs that could exhaust the user\u0027s allowance.\n\nBecause of the lack of login notification from Gerrit, the solution\nneeds to be based on the presence of the Set-Cookie header in\nthe HTTP response, hence the group refresh needs to use a\nServletFilter that is invoked for every request heading to Gerrit.\n\nBug: Issue 308979847\nChange-Id: Ie5d012fb7c34e3edbb5576b53de32fd5b140ec17\n"
    },
    {
      "commit": "6824c0a9206df32e8c0da3e022060134a4c8b097",
      "tree": "91d0df9f3aaee240eb483236d3114e85422ba59e",
      "parents": [
        "87e71fb8b19c9cfc4e6dcc86f3ad139a0f0f0155",
        "c438c579480502708b77d6a9e38833f52232aec9"
      ],
      "author": {
        "name": "Dariusz Luksza",
        "email": "dariusz.luksza@gmail.com",
        "time": "Mon Oct 30 14:57:33 2023 +0000"
      },
      "committer": {
        "name": "Dariusz Luksza",
        "email": "dariusz.luksza@gmail.com",
        "time": "Mon Oct 30 14:58:44 2023 +0000"
      },
      "message": "Merge branch \u0027stable-3.9\u0027 into master\n\nChange-Id: I0816eacb94e8f3301e1f11866ad014bde05a7bd9\n"
    },
    {
      "commit": "c438c579480502708b77d6a9e38833f52232aec9",
      "tree": "91d0df9f3aaee240eb483236d3114e85422ba59e",
      "parents": [
        "f0678bb0e80509b9c042eb843f711e3be4f3b55b"
      ],
      "author": {
        "name": "Dariusz Luksza",
        "email": "dariusz.luksza@gmail.com",
        "time": "Mon Oct 30 12:33:26 2023 +0000"
      },
      "committer": {
        "name": "Dariusz Luksza",
        "email": "dariusz.luksza@gmail.com",
        "time": "Mon Oct 30 12:33:26 2023 +0000"
      },
      "message": "Fix typos in CanonicalWebUrls\n\nFixes typos in the `CanonicalWebUrls` class and variable names. Plus use\n`assertTrue` in the `GitHubOAuthConfigTest`. This is a follow-up change\nafter post submit review comments[1]\n\n[1] https://gerrit-review.googlesource.com/c/plugins/github/+/391296/comment/4f6cb71e_eedd6d1b/\n\nChange-Id: I232663ad940a2bc378721a9841e7415764abc6f9\n"
    },
    {
      "commit": "f0678bb0e80509b9c042eb843f711e3be4f3b55b",
      "tree": "4295462c7b54276a3ff84e9061b6b01f3cf3b67f",
      "parents": [
        "ade5dd496a5501c4402b71bf6ed0436104e689cb"
      ],
      "author": {
        "name": "Dariusz Luksza",
        "email": "dariusz.luksza@gmail.com",
        "time": "Fri Oct 27 16:20:08 2023 +0100"
      },
      "committer": {
        "name": "Dariusz Luksza",
        "email": "dariusz.luksza@gmail.com",
        "time": "Mon Oct 30 10:49:54 2023 +0000"
      },
      "message": "Configure virutal domain specific scopes\n\nWhen using both `github` and `virutalhost` plugins together is may be\nrequired to have different scope selections for each site. Currently\nthe `github` plugin does not allow host specific scope configuration.\n\nThis patch adds the ability to use config subsection to configure\ndifferent scopes per site. For example:\n\n[github \"second.site.co\"]\n  scopeRedonly \u003d USER_EMAIL\n  scopeReadonlySequence \u003d 0\n  scopeReadonlyDescription \u003d Share only email address\n\nwill configure only a single `USER_EMAIL` scope for `second.site.co`.\n\nIn order to make this work, we also change the redirection flow, as\ncurrently `/login` will redirect to the main canonical web url. Which\nmeans that we cannot discover which site is used and set scopes on scope\nselection page. Now we\u0027ll keep user on the same domain name.\n\nBug: Issue 307761450\nChange-Id: I24973cb2914052f23e684854211e1a21011dfecf\n"
    },
    {
      "commit": "ade5dd496a5501c4402b71bf6ed0436104e689cb",
      "tree": "853511d5a017938261f4e4b31c67516d578d3a82",
      "parents": [
        "87e71fb8b19c9cfc4e6dcc86f3ad139a0f0f0155"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sun Oct 29 11:01:56 2023 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sun Oct 29 11:06:00 2023 +0000"
      },
      "message": "Bump Gerrit to v3.9.0-rc2 and apply fixes\n\nApply all fixes needed to build the github plugin on\ntop of Gerrit v3.9.0-rc2.\n\nChange-Id: I87a40628b169c583390e685c1b03fde4056b9783\n"
    },
    {
      "commit": "87e71fb8b19c9cfc4e6dcc86f3ad139a0f0f0155",
      "tree": "62fc5989320bbb8909206500bf5f3d6d547b1aed",
      "parents": [
        "2d35fb8d91e05e086615998deec6407bceeda248"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Oct 21 01:33:47 2023 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Oct 25 18:04:14 2023 +0000"
      },
      "message": "Allow keeping custom configs in FanoutReplicationConfig\n\nSome of the replication plugin default choices may not be suitable\nfor users of GitHub that need some specific replication settings.\n\nHistorically the defaults of the replication plugin were not suitable\nfor pushing to a non-Gerrit repository, hence the fragility of\ngenerating and assuming defaults.\n\nWith this change, allow to keep any ad-hoc customisation on the\ngenerated replication configuration files.\n\nChange-Id: Ic451e934b1f8ef062c502eaad3c3f1bf63813556\n"
    },
    {
      "commit": "2d35fb8d91e05e086615998deec6407bceeda248",
      "tree": "7e1c05b5e149ebea463173df062e1c70e5d32ffb",
      "parents": [
        "c4d6eaaadb74fb6ffe33fac8856f632f14301efe"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Oct 21 01:42:05 2023 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Oct 24 20:37:54 2023 +0000"
      },
      "message": "Bump Gerrit API to v3.9.0-rc0\n\nAlso bump Java version to 17, the one\nsupported for the Gerrit distribution.\n\nChange-Id: I0be98b38fea16ba47a8aee64a8f5840e883c6c5d\n"
    },
    {
      "commit": "c4d6eaaadb74fb6ffe33fac8856f632f14301efe",
      "tree": "acf5cb07a60bcedb47d9c684db45c1a1c0092ce0",
      "parents": [
        "37dc2cc59dd4f1a21a554ea6156eaac1f533be1e",
        "3f2f0d612d931b238dd7df2f9a45c0ded8c8ed3f"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Oct 12 21:17:05 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 12 21:17:05 2023 +0000"
      },
      "message": "Merge \"chore: modernize plugin dependencies\""
    },
    {
      "commit": "37dc2cc59dd4f1a21a554ea6156eaac1f533be1e",
      "tree": "0032914018320f948452a58f259533091982fcc3",
      "parents": [
        "eb56de73b88cf027b4899f0681eb43ccf4a2d76e",
        "9f4017709ceeb45d7259309cefef5d4350954238"
      ],
      "author": {
        "name": "Dariusz Łuksza",
        "email": "dariusz.luksza@gmail.com",
        "time": "Wed Oct 11 12:11:13 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 11 12:11:13 2023 +0000"
      },
      "message": "Merge \"Report authentication progress to the user\""
    },
    {
      "commit": "3f2f0d612d931b238dd7df2f9a45c0ded8c8ed3f",
      "tree": "b9fcb8ed23a29aef9b7faaa31f359042304f840b",
      "parents": [
        "eb56de73b88cf027b4899f0681eb43ccf4a2d76e"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Wed Oct 11 08:52:56 2023 +0200"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Wed Oct 11 12:27:11 2023 +0200"
      },
      "message": "chore: modernize plugin dependencies\n\nNote that `org.eclipse.mylyn.github:org.eclipse.egit.github.core` in the\ncurrent version is a signed jar hence signature gets removed during\nshading as otherwise it fails to load in Gerrit with:\n\n  [2023-10-11T12:18:58.433+02:00] [main] WARN  com.google.gerrit.server.plugins.PluginLoader : Cannot load plugin github-plugin\n  java.lang.SecurityException: Invalid signature file digest for Manifest main attributes\n\nChange-Id: Ifed1f475d6f9c16be8ccc8f3b9cfc5891db9872b\n"
    },
    {
      "commit": "9f4017709ceeb45d7259309cefef5d4350954238",
      "tree": "4c6235fbc5cf6e691113d14ce04e1261243bc616",
      "parents": [
        "3eb36725ab9f12097b3cdf3c3aed72472c72a252"
      ],
      "author": {
        "name": "Dariusz Luksza",
        "email": "dariusz.luksza@gmail.com",
        "time": "Thu Oct 05 18:30:47 2023 +0100"
      },
      "committer": {
        "name": "Dariusz Luksza",
        "email": "dariusz.luksza@gmail.com",
        "time": "Wed Oct 11 09:28:47 2023 +0100"
      },
      "message": "Report authentication progress to the user\n\nThe GitHub OAuth API can get really slow, taking tens of seconds to\nrespond. Which is fine when users do see that there\u0027s something going\non in the backgournd.\n\nUnfortunately current implementation of scope selection and sing-in\nprocess gives no feedback about onging OAuth request. For some users\nthis may feel like something is broken or Gerrit site is slow.\n\nTo improve user experience we add progress \"indicators\" in both cases.\n\nIn the scope selection, the \"Login \u003e\" button will be disabled after\nclicking and its text will also change to \u0027Waiting for GitHub...\u0027.\n\nIn case of the \u0027Sign-in\u0027 link in Gerrit UI, we use the new \u0027auth-link\u0027\nextension point to replace that link with custom component. The\n\u0027gr-github-oauth-progress\u0027 will wait 550ms and then show a loading\nspinner (blocking the whole site) saying \u0027Waiting for GitHub...\u0027.\n\nIn both cases users are now informated that the authentication is taking\nplace and they should wait for it to finish.\n\nBug: Issue 302826306\nChange-Id: Ic4a8dc24d9133ac59dfe65858ac7ec8510cf4f09\n"
    },
    {
      "commit": "eb56de73b88cf027b4899f0681eb43ccf4a2d76e",
      "tree": "494762edb82c60fab5d793c54550e0293c2b9326",
      "parents": [
        "d9e7d358bc09242f6087bf4fda56290db7fcecf1",
        "3eb36725ab9f12097b3cdf3c3aed72472c72a252"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Wed Oct 11 08:12:15 2023 +0200"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Wed Oct 11 08:12:15 2023 +0200"
      },
      "message": "Merge branch \u0027stable-3.8\u0027\n\n* stable-3.8:\n  Avoid using \u0027objectUnderTest\u0027 term in GitHubOAuthConfigTest\n  Honour the cookieDomain also for the OAuth scope selection\n  Revert \"Build OAuth redirect URL when X-Forwarded-Host is present\"\n  Build OAuth redirect URL when X-Forwarded-Host is present\n  Fix HTTP session leaks during OAuth reauthentication\n  Stop filtering Gerrti\u0027s static resources with OAuthFilter\n\nChange-Id: I263195c4ced7e83bc2d62ae25543a098995706ae\n"
    },
    {
      "commit": "3eb36725ab9f12097b3cdf3c3aed72472c72a252",
      "tree": "fd92f78765ce1f8203e5e8f7dde7821743667dea",
      "parents": [
        "5ffa86f62bfc7f0b208deeee61fdaeae5d6927ac"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Sep 18 22:11:28 2023 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Sep 18 23:01:52 2023 +0100"
      },
      "message": "Avoid using \u0027objectUnderTest\u0027 term in GitHubOAuthConfigTest\n\nChange-Id: Ifaf07fca75b55dd86c8999533b3abca23f4e288c\n"
    },
    {
      "commit": "5ffa86f62bfc7f0b208deeee61fdaeae5d6927ac",
      "tree": "ec26c57f44e48704ee3624d8d50027f4b0ed3197",
      "parents": [
        "956f986be9f16a54b21b022e297879e22eec922f"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Sep 18 19:00:30 2023 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Sep 18 22:09:11 2023 +0100"
      },
      "message": "Honour the cookieDomain also for the OAuth scope selection\n\nGerrit defines the cookieDomain for associating the authentication\ncookie with a service; however, the cookie domain was not honoured\nfor the scope selection, making more difficult for users to switch\nbetween different sites.\n\nExample:\n- User john logged in to site-1.gerrit.mycompany.com\n- Gerrit cookie associated to .gerrit.mycompany.com\n- User john login/logout to site-2.gerrit.mycompany.com\n- The OAuth scope selection is lost\n\nThe OAuth scope cookie must respect the same cookieDomain defined\nin the auth section of gerrit.config.\n\nChange-Id: I0317bd38badb04c12a959973e80ffe726b3df168\n"
    },
    {
      "commit": "956f986be9f16a54b21b022e297879e22eec922f",
      "tree": "e156913ec649adb03a33bde097f4f60307c18618",
      "parents": [
        "9398c7877ab279303a29cb01120d681433d30a6b"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Sep 18 17:25:58 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 18 17:25:58 2023 +0000"
      },
      "message": "Revert \"Build OAuth redirect URL when X-Forwarded-Host is present\"\n\nThis reverts commit 9398c7877ab279303a29cb01120d681433d30a6b.\n\nReason for revert: The fix is on the wrong component, as the calculation of the proper canonical web url should have been fixed with Change 386616\n\nChange-Id: I6e41ef307274f7f8afdf1af51bd34da5b067d80c\n"
    },
    {
      "commit": "9398c7877ab279303a29cb01120d681433d30a6b",
      "tree": "c0401941572172b603c50da58bc8d70466265550",
      "parents": [
        "b34da26abc259a239fe3828c6bf37ebb47016d8c"
      ],
      "author": {
        "name": "Alvaro Vilaplana Garcia",
        "email": "alvaro.vilaplana@gmail.com",
        "time": "Wed Aug 30 10:35:50 2023 +0100"
      },
      "committer": {
        "name": "Alvaro Vilaplana Garcia",
        "email": "alvaro.vilaplana@gmail.com",
        "time": "Sat Sep 02 10:38:57 2023 +0100"
      },
      "message": "Build OAuth redirect URL when X-Forwarded-Host is present\n\nIn the past, when a Gerrit multi-site topology was used featuring a\nprimary domain, i.e example.com (serving as a geo-location load\nbalancer), along with multiple Gerrit sites like review-1.example.com\nand review-2.example.com, the initiation of the GitHub sign-in flow\nwithin any of the Gerrit sites triggered a redirection to GitHub,\nreferred to as the user\u0027s GitHub identity request [1]. During this\nprocess, the redirect_uri query parameter was constructed using\ninformation from the gerrit.canonicalWebUrl property defined in the\netc/gerrit.config file [2]. It\u0027s important to note that this property\noccasionally contained a URL with a host matching the primary domain,\nexample.com. Consequently, when users attempted to sign in via GitHub,\nthey were redirected to this main domain.\n\nHowever, with this updated approach, the redirect_uri is now constructed\nbased on the X-Forwarded-Host header if it is present in the request\n(otherwise from gerrit.canonicalWebUrl). This means that when a sign-in\nflow is initiated, for instance, from review-1.example.com, the\nForwarded-Host header will accurately contain the value\nreview-1.example.com. As a result, the redirection URL will utilize this\nvalue as its host.\n\nReferences:\n[1] https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps#web-application-flow\n[2] https://gerrit-review.googlesource.com/Documentation/config-gerrit.html\n\nBug: Issue 297231231\nChange-Id: I233824a202041c7a7d1905ef784ae2b6f8d23160\n"
    },
    {
      "commit": "b34da26abc259a239fe3828c6bf37ebb47016d8c",
      "tree": "e156913ec649adb03a33bde097f4f60307c18618",
      "parents": [
        "a39ed53e0f6ed95ff6c0e6de8dccf7ac5b8db849"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Aug 25 22:54:51 2023 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sun Aug 27 10:31:42 2023 +0100"
      },
      "message": "Fix HTTP session leaks during OAuth reauthentication\n\nWhen an existing Gerrit session expires or the user\nis signing out explicitly, the underlying HTTP session\nremains active because of the JSESSIONID cookie being\npreserved on the client. The situation was detected by\nthe OAuthWebFilter which was trying to resolve it by\ninvalidating the HTTP session explicitly.\n\nBy performing a detailed analysis of the HTTP sessions\nand the GitHubLogin objects leaks, it is clear that\nthe explicit invalidation causes a \"race\" between the\nclient and the server where every single call creates\na new HTTP session object with a GitHubLogin associated\nwhich would never be effectively used, because the\nGerrit login isn\u0027t completed and therefore the Gerrit\nsession is not finalised yet.\n\nIt is incorrect to expire the JSESSIONID if the\nclient still holds a cooking pointer to it, but the\nexisting session can be simply \"cleaned up\" by the\nGitHub and Gerrit account information that aren\u0027t\nknown yet, so that no more objects are created and\nleaked.\n\nAfter the fix, there is exactly one GitHubLogin\nobject created per OAuth authentication phase vs.\ntens of them which was the previous situation.\n\nBug: Issue 40015390\nChange-Id: Ieff58fa48c9eb8cca6a90524fa616de9564767f5\n"
    },
    {
      "commit": "a39ed53e0f6ed95ff6c0e6de8dccf7ac5b8db849",
      "tree": "55227149b4c75114c0a9236414a9a4a44b5b6ac7",
      "parents": [
        "18a22aa925f6f3ebd2e693d20f0a7752fa7fd2b9"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Sat Aug 19 08:01:41 2023 +0200"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Sun Aug 20 07:56:07 2023 +0200"
      },
      "message": "Stop filtering Gerrti\u0027s static resources with OAuthFilter\n\nWhen static resources (e.g. `woff2` fonts) are reached out from client\nthey shouldn\u0027t be filtered out with OAuthFilter. Note that existing\nextensions were sorted and enriched with additional extensions from\nGerrit\u0027s `ResourceServlet.java` (see [1] for details).\n\nNote that `html` files are resource files from Gerrit\u0027s perspective\nhowever GitHub plugin\u0027s functionality relies on processing and\nexpanding them hence they are from this perspective not static.\n\n[1]: https://gerrit.googlesource.com/gerrit/+/refs/heads/master/java/com/google/gerrit/httpd/raw/ResourceServlet.java#67\n\nBug: Issue 40015390\nChange-Id: I22f05f07f18c516db76a94fe2b9d4f20f55bc422\n"
    },
    {
      "commit": "d9e7d358bc09242f6087bf4fda56290db7fcecf1",
      "tree": "6d4f74c2e29cd1fc4030a1fc57bc50268a39f966",
      "parents": [
        "9e45c9b6a286b4dbe89d89cca23bbe672317a02b",
        "18a22aa925f6f3ebd2e693d20f0a7752fa7fd2b9"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Aug 16 23:36:32 2023 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Aug 16 23:36:32 2023 +0100"
      },
      "message": "Merge branch \u0027stable-3.8\u0027\n\n* stable-3.8:\n  Add support for virtual host based wizard flow\n\nChange-Id: I260557af0d3bd4ee35d3373ae010f6026f72ed07\n"
    },
    {
      "commit": "18a22aa925f6f3ebd2e693d20f0a7752fa7fd2b9",
      "tree": "e28ce5034eda0e11b8ca4069ce858f7929537429",
      "parents": [
        "3c5a953ce14a0379711a4aa85d860de2a7f148b6"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Wed Jul 05 06:23:06 2023 +0200"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Aug 16 22:34:45 2023 +0000"
      },
      "message": "Add support for virtual host based wizard flow\n\nThis change adds virtual host specific wizard flow configuration.\nGiven this default wizard flow definition:\n[github]\n    wizardFlow \u003d account.gh \u003d\u003e repositories.html\n\nIt can be overridden on virtual host base:\n[github \"project1.review.com\"]\n    wizardFlow \u003d account.gh \u003d\u003e project1_repositories.html\n\nAlso add test coverage for the wizard functionality\nand use Junit/Truth as test validation framework.\n\nChange-Id: I259b9da9dba037df89f847c8a702d462dd756fdf\n"
    },
    {
      "commit": "9e45c9b6a286b4dbe89d89cca23bbe672317a02b",
      "tree": "de3f0c54c62370153ff67fcaccce9ab383a6fbc0",
      "parents": [
        "9a413b3a065b309aeab89ad75c17239d148bece3"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Jul 03 15:55:51 2023 +0200"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Aug 16 22:06:00 2023 +0100"
      },
      "message": "Fix compile warnings and avoid usage of deprecated classes\n\nChange-Id: Id84c79ab170c066ed40b24ca20816d7758470a07\n"
    },
    {
      "commit": "9a413b3a065b309aeab89ad75c17239d148bece3",
      "tree": "05b3206ac388c690ad03439e54cb6efec03696e6",
      "parents": [
        "237ac23579fb7face958b3b14529dc8ee82c17b5",
        "3c5a953ce14a0379711a4aa85d860de2a7f148b6"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Aug 08 08:55:51 2023 +0300"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Aug 08 08:55:51 2023 +0300"
      },
      "message": "Merge branch \u0027stable-3.8\u0027\n\n* stable-3.8:\n  Fix cache eviction upon project import from GitHub\n  Build github plugin against the v3.8.0 Gerrit API\n\nChange-Id: Iabf238a7127445aebbc6c69b79b993e79cd1d2e3\n"
    },
    {
      "commit": "3c5a953ce14a0379711a4aa85d860de2a7f148b6",
      "tree": "4a1fd5c21f09fb5a48d34a9bd633f3b93d90be1a",
      "parents": [
        "6b3fc81df3388b33d4e79a8f2beb52d30d290bf5",
        "3fdd221342cb318c6648e3f4eb90ab24eb9392e1"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Aug 08 05:55:16 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 08 05:55:16 2023 +0000"
      },
      "message": "Merge \"Fix cache eviction upon project import from GitHub\" into stable-3.8"
    },
    {
      "commit": "3fdd221342cb318c6648e3f4eb90ab24eb9392e1",
      "tree": "8d0468cc95fc2db225ead13077fc4fc5827b0448",
      "parents": [
        "820bcac9a3461d5dc5ef4844dca3be34dc3e6e58"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Aug 05 10:22:37 2023 +0300"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Aug 07 09:36:06 2023 +0000"
      },
      "message": "Fix cache eviction upon project import from GitHub\n\nThe import phase from GitHub has three steps:\n1. create a Gerrit project with the correct public/private parent\n2. configure the project\u0027s ACLs\n3. import existing commits from GitHub\n\nThe project cache would not needed to be evicted, in theory.\nHowever, after step 1 the project entry is in the projects cache,\nbut not its ACLs. The  step 2 therefore would need to\nwait the projects cache TTL for allowing the ACLs to be taken\ninto consideration, which would take up to 1h by default.\n\nAdd an explicit evict after step 2, so that ACLs have immediate\neffect.\n\nTested manually and verified that:\n\n- Without this change, the ACLs are not used until the projects\n  cache are flused\n- With this change, the ACLs are immediately used right after the\n  project import.\n\nChange-Id: I02880564562f170ef0a73bcec56dd37d39930d7a\n"
    },
    {
      "commit": "237ac23579fb7face958b3b14529dc8ee82c17b5",
      "tree": "5d85c3b133d8af54713428263e49c5e0360e5e91",
      "parents": [
        "1313bc2d32f3d9d64a61249d72a55842c49e88ed"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Jun 27 22:07:46 2023 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david.ostrovsky@gmail.com",
        "time": "Wed Jun 28 07:47:43 2023 +0000"
      },
      "message": "Update init command instructions\n\nChange-Id: I8093fac335c9cc8a5b3d285e02d54d47d76e47ae\n"
    },
    {
      "commit": "1313bc2d32f3d9d64a61249d72a55842c49e88ed",
      "tree": "8aeda2e11b9fb5b7c8e65e77b9c65750e7fc1883",
      "parents": [
        "40009199216e2892a0afa0e31bfbd4679e974876"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Jun 27 22:05:01 2023 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david.ostrovsky@gmail.com",
        "time": "Wed Jun 28 07:45:47 2023 +0000"
      },
      "message": "Bump github-api version to 1.315\n\nAlso update com.infradna.tool:bridge-method-injector version to 1.23.\n\nChange-Id: I9b5a10a231ff3d467bb007b1da2e7784ae5be050\n"
    },
    {
      "commit": "40009199216e2892a0afa0e31bfbd4679e974876",
      "tree": "c204fc20c4d661538964840a991da75875211872",
      "parents": [
        "922646ceed3730b84add9dbc204ea622642dc90b"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Jun 27 20:36:24 2023 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david.ostrovsky@gmail.com",
        "time": "Wed Jun 28 07:44:45 2023 +0000"
      },
      "message": "PullRequestCreateChange: Remove unused import and reformat with google-java-format\n\nChange-Id: I7a4025be79587d56d43b78ed144ad6415acdfb27\n"
    },
    {
      "commit": "6b3fc81df3388b33d4e79a8f2beb52d30d290bf5",
      "tree": "b5c9e6ad691630a0e3578cb88b5b21ae66b94014",
      "parents": [
        "ccd7ba8dddfe2e7c84fc344e082be7b73b096f63"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Jun 27 20:29:08 2023 +0200"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jun 28 07:42:09 2023 +0000"
      },
      "message": "Build github plugin against the v3.8.0 Gerrit API\n\nChange-Id: I0184b1575fcd1523bb30d0add781ed5f7d6a00a3\n(cherry picked from commit 922646ceed3730b84add9dbc204ea622642dc90b)\n"
    },
    {
      "commit": "922646ceed3730b84add9dbc204ea622642dc90b",
      "tree": "b5c9e6ad691630a0e3578cb88b5b21ae66b94014",
      "parents": [
        "343a38a5d05ed118abe25943c84218011238a788"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Jun 27 20:29:08 2023 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Jun 27 20:29:08 2023 +0200"
      },
      "message": "Build github plugin against the v3.8.0 Gerrit API\n\nChange-Id: I0184b1575fcd1523bb30d0add781ed5f7d6a00a3\n"
    },
    {
      "commit": "343a38a5d05ed118abe25943c84218011238a788",
      "tree": "4e56db55bc77913f716110864a066c4514b1abbf",
      "parents": [
        "820bcac9a3461d5dc5ef4844dca3be34dc3e6e58",
        "ccd7ba8dddfe2e7c84fc344e082be7b73b096f63"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Sat May 20 10:31:08 2023 +0200"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Sat May 20 10:31:08 2023 +0200"
      },
      "message": "Merge branch \u0027stable-3.8\u0027\n\n* stable-3.8:\n  Build plugin against the Gerrit 3.7.3 version\n  Bump version to 3.7.2\n\nChange-Id: Ifa2b220e5a50df7e17a2de660ed40dbca3b38151\n"
    },
    {
      "commit": "ccd7ba8dddfe2e7c84fc344e082be7b73b096f63",
      "tree": "4e56db55bc77913f716110864a066c4514b1abbf",
      "parents": [
        "820bcac9a3461d5dc5ef4844dca3be34dc3e6e58",
        "fc300359dc83f6256bceeb2f702908e749e2aea1"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Sat May 20 10:15:20 2023 +0200"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Sat May 20 10:16:45 2023 +0200"
      },
      "message": "Merge branch \u0027stable-3.7\u0027 into stable-3.8\n\n* stable-3.7:\n  Build plugin against the Gerrit 3.7.3 version\n  Bump version to 3.7.2\n\nChange-Id: If9b80bcd77e9a8a54a2d9f076f55a7ba78d79f0b\n"
    },
    {
      "commit": "820bcac9a3461d5dc5ef4844dca3be34dc3e6e58",
      "tree": "4e56db55bc77913f716110864a066c4514b1abbf",
      "parents": [
        "0e6064f0a6dd3bf0dd1fbe1d34187c92581c0e24",
        "7f59f90d245d8943d1bd158047370e9883d1b024"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri May 19 20:48:41 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 19 20:48:41 2023 +0000"
      },
      "message": "Merge \"Build github plugin against the v3.8.0-rc5 Gerrit API\""
    },
    {
      "commit": "7f59f90d245d8943d1bd158047370e9883d1b024",
      "tree": "20496209ea2374ca3d73d963048f5ecbc854d8e3",
      "parents": [
        "1c8c4a8c01a840b684dc786564d880352360480c"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Mon May 15 08:10:46 2023 +0200"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri May 19 21:43:51 2023 +0100"
      },
      "message": "Build github plugin against the v3.8.0-rc5 Gerrit API\n\nChange-Id: Ib2603895e4e836f4b748bef3e55a4045a30fbb36\n"
    },
    {
      "commit": "0e6064f0a6dd3bf0dd1fbe1d34187c92581c0e24",
      "tree": "db93481df66df6b431a81b62e2806c5e05cfc762",
      "parents": [
        "429d15ced9c331379be52e2b0e069e138893ef9a"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Wed May 17 13:35:33 2023 +0100"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu May 18 20:15:16 2023 +0000"
      },
      "message": "Spelling mistakes in README\n\nChange-Id: I7efd0ff75d37ec6d869f9a3bdf328fc8a4bc4060\n"
    },
    {
      "commit": "429d15ced9c331379be52e2b0e069e138893ef9a",
      "tree": "c458c5254debb43147b58f42ba187f8445e1b1fe",
      "parents": [
        "1c8c4a8c01a840b684dc786564d880352360480c",
        "199b7238eb673c7b55ba4e0caee957c25e05cd06"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu May 18 20:14:18 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 18 20:14:18 2023 +0000"
      },
      "message": "Merge \"Github-api fork is not longer used\""
    },
    {
      "commit": "fc300359dc83f6256bceeb2f702908e749e2aea1",
      "tree": "058dc9ac5a31ba392bae8d7947689430cb7547b0",
      "parents": [
        "96faed4f39af072ab2401d563aace813b1ad3920"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Mon May 15 08:13:15 2023 +0200"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Mon May 15 08:13:15 2023 +0200"
      },
      "message": "Build plugin against the Gerrit 3.7.3 version\n\nChange-Id: Ic48af16bd062aec7e741df0438aa3cb7212b8027\n"
    },
    {
      "commit": "199b7238eb673c7b55ba4e0caee957c25e05cd06",
      "tree": "90d79c5b52bf619a69c28d242508f6584437c1d4",
      "parents": [
        "948dff0aa12a7cd592cc42ac5624f15e7a5ea52d"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Wed May 10 09:42:15 2023 +0100"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Wed May 10 09:42:15 2023 +0100"
      },
      "message": "Github-api fork is not longer used\n\nChange-Id: Ib0130ce36e78dbbe1cc7eb019bcce32e377f6567\n"
    },
    {
      "commit": "96faed4f39af072ab2401d563aace813b1ad3920",
      "tree": "f7a7ae1263d7f1832d3903dc9606f4bc2c441d86",
      "parents": [
        "4d92d09ee99cf705291bd869376d45e6fd64e42a"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sun Apr 16 12:54:34 2023 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sun Apr 16 12:54:34 2023 +0100"
      },
      "message": "Bump version to 3.7.2\n\nChange-Id: Ia4b220329a444ef313180430d096f25f5aba7b94\n"
    },
    {
      "commit": "1c8c4a8c01a840b684dc786564d880352360480c",
      "tree": "98984cba1e9edfa9f93895980e0db1f98d77e894",
      "parents": [
        "948dff0aa12a7cd592cc42ac5624f15e7a5ea52d",
        "4d92d09ee99cf705291bd869376d45e6fd64e42a"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Apr 15 11:04:59 2023 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Apr 15 11:05:03 2023 +0100"
      },
      "message": "Merge branch \u0027stable-3.7\u0027\n\n* stable-3.7:\n  Compute projectName in GitCloneStep constructor\n  Set parent project at creation time for imported repos from GitHub\n  Disallow the discovery of other user\u0027s membership\n  Revert \"Set version 3.5.0.2\"\n\nChange-Id: I7d4f5db1c936beb771f661fa3fe5c45b97d3c75b\n"
    },
    {
      "commit": "4d92d09ee99cf705291bd869376d45e6fd64e42a",
      "tree": "10ff961fb0435ebfe0ecf83e334547a8ae0195bf",
      "parents": [
        "67deb78f3a6fb54ff467ecd9a3f923f9380195de",
        "dd7f51426473ac616b184512713e8253440fe5ec"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Apr 15 11:02:30 2023 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Apr 15 11:02:36 2023 +0100"
      },
      "message": "Merge branch \u0027stable-3.6\u0027 into stable-3.7\n\n* stable-3.6:\n  Compute projectName in GitCloneStep constructor\n  Set parent project at creation time for imported repos from GitHub\n  Disallow the discovery of other user\u0027s membership\n  Revert \"Set version 3.5.0.2\"\n\nChange-Id: I1b040a3c622245e9be1e99539945ffce5606ccee\n"
    },
    {
      "commit": "dd7f51426473ac616b184512713e8253440fe5ec",
      "tree": "cf679f906bc3c1928a28d999794026d6be4dd518",
      "parents": [
        "ced93f25bbaeec77931fe9dd7f5cefd898a0b06d",
        "4bc64b9883c590db258d4b2cdb06f9d3a1ba6038"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Apr 15 10:59:59 2023 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Apr 15 11:00:05 2023 +0100"
      },
      "message": "Merge branch \u0027stable-3.5\u0027 into stable-3.6\n\n* stable-3.5:\n  Compute projectName in GitCloneStep constructor\n  Set parent project at creation time for imported repos from GitHub\n  Disallow the discovery of other user\u0027s membership\n  Revert \"Set version 3.5.0.2\"\n\nChange-Id: I039c787257872da845b86728748c4ede77c2e8db\n"
    },
    {
      "commit": "4bc64b9883c590db258d4b2cdb06f9d3a1ba6038",
      "tree": "e2feb999f89c79a1112feda03c48ed85ed46d819",
      "parents": [
        "14624504bf71b24d8079d569851c6c1471e74670"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Mar 13 21:03:58 2023 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Mar 14 22:25:06 2023 +0000"
      },
      "message": "Compute projectName in GitCloneStep constructor\n\nThe projectName variable was recalculated multiple times\nbased on the same instance values which would make sense\nto be done only once in the constructor.\n\nChange-Id: I62580d40127c6c620e5f2f8af2f1aa2e4268ceb1\n"
    },
    {
      "commit": "14624504bf71b24d8079d569851c6c1471e74670",
      "tree": "93f8857fdb61969deb958f513ba57406f4c5bb97",
      "parents": [
        "77d2a55ec793216f7df6a21969162ab4e0d52d96"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Feb 27 23:57:52 2023 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Mar 13 20:56:11 2023 +0000"
      },
      "message": "Set parent project at creation time for imported repos from GitHub\n\nThe configuration of the Gerrit parent project should be done\nright at creation time for avoiding to have cached ACLs on the\nprevious project hierarchy.\n\nGerrit does not evict the whole chain of project hierarchy\nfor avoiding expensive cache coherence evaluation. However, the\nimport of a project with the wrong public hierarchy\nmay lead the project to be public right after the import.\n\nThe cache eviction would then eventually make the repository\nprivate, however the exposure to external access for a few minutes\nrepresent a security risk and therefore must be avoided at all\ncosts.\n\nMove the parent project definition at the GitCloneStep stage\nso that the right hierarchy is in place at the time of the\ngit fetch from GitHub.\n\nBug: Issue 16727\nChange-Id: Id1a6c4809eed43ba618ed13e2c3161a8968dd063\n"
    },
    {
      "commit": "948dff0aa12a7cd592cc42ac5624f15e7a5ea52d",
      "tree": "daef9fa73e2931d632e9e93916d39027ce33d173",
      "parents": [
        "67deb78f3a6fb54ff467ecd9a3f923f9380195de"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Jan 17 21:27:40 2023 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Jan 17 21:28:57 2023 +0000"
      },
      "message": "Remove references to Log4J\n\nLog4J API dependency is automatically implied by the Gerrit API\nand does not need to specified in the pom.xml.\n\nBug: Issue 16620\nChange-Id: Icafb82e34015609e5583f35f706afcd9270a891b\n"
    },
    {
      "commit": "4568fb8d2cc7743d50ceb7124c1f3ae16a8e5836",
      "tree": "b4390d4bf2b03ea95903be4bddbb6c90fa087beb",
      "parents": [
        "4d0bdf00219e394146df2ef8f777311bd6106a0d"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Tue Nov 08 11:00:52 2022 +0000"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Tue Nov 08 11:00:52 2022 +0000"
      },
      "message": "Set plugin version to 3.4.7\n\nChange-Id: Ia0876786a2793723793f22cdf37964f96a25b538\n"
    },
    {
      "commit": "67deb78f3a6fb54ff467ecd9a3f923f9380195de",
      "tree": "0c9a9b8d41ce59096765a8df13b01f4211081154",
      "parents": [
        "3696824d2b06b433d5397b0a74fa03ac5bae36dc"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Tue Oct 25 08:55:09 2022 +0200"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Tue Oct 25 08:55:09 2022 +0200"
      },
      "message": "Set version to 3.7.0-rc3\n\nChange-Id: Iad37fc74d804845d9213593a1dd8a6b9f2defd50\n"
    },
    {
      "commit": "3696824d2b06b433d5397b0a74fa03ac5bae36dc",
      "tree": "65bafc86d08df46ab0a52936a2e20aa4b04a9fe3",
      "parents": [
        "81eb098359032196f7b44cdc448ef42150953501"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Oct 20 00:04:10 2022 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Oct 20 00:04:10 2022 +0100"
      },
      "message": "Set version to 3.7.0-rc2\n\nChange-Id: I7dc5feb4e1d10db99ca78923712c53081848304c\n"
    },
    {
      "commit": "81eb098359032196f7b44cdc448ef42150953501",
      "tree": "41fbeae538b462f506071c8bfe0ba58c08e71cb9",
      "parents": [
        "0cc17c42ced017432064eab889962dc10bf3c70a",
        "ced93f25bbaeec77931fe9dd7f5cefd898a0b06d"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Oct 10 08:57:30 2022 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Oct 10 08:57:30 2022 +0100"
      },
      "message": "Merge branch \u0027stable-3.6\u0027\n\n* stable-3.6:\n  Generate default password during the plugin\u0027s init step\n  Encrypt oauth token at rest\n  Remove test dependencies\n  Remove unused GITHUB_GET_USER variable\n  Remove unused constructor argument\n  Bump Apache Velocity to 2.3\n\nChange-Id: I68e9dc2607c036eb83f95af62ba205539bdb89fe\n"
    },
    {
      "commit": "ced93f25bbaeec77931fe9dd7f5cefd898a0b06d",
      "tree": "41fbeae538b462f506071c8bfe0ba58c08e71cb9",
      "parents": [
        "93a9b50f8fc22bc22ee92c35a93be9e4c16f0c9a"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Sat Sep 24 12:50:52 2022 +0200"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Fri Oct 07 08:46:23 2022 +0200"
      },
      "message": "Generate default password during the plugin\u0027s init step\n\nDuring the plugin\u0027s init step one can either rely on that the default\npassword (16 bytes long) under \u0027$site/data/@PLUGIN@/default.key\u0027 file\nis being generated, provide own configuration or add a new one under\nnew \u0027key-id\u0027 (that will be marked as default).\n\nBug: Issue 16192\nChange-Id: I99e4024ecf19d828deb2d84b40fe1dd7e1abe23d\n"
    },
    {
      "commit": "93a9b50f8fc22bc22ee92c35a93be9e4c16f0c9a",
      "tree": "7e18749a60eaf408c7a6437a6191e3293d342db0",
      "parents": [
        "2cf21319cb457a1464aade9862c27ceb9173c1b6"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Aug 24 19:07:14 2022 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Thu Sep 22 18:49:06 2022 +0200"
      },
      "message": "Encrypt oauth token at rest\n\nThe oauth token provided by Github is used together with the\n`github_oauth` schema, to generate a new external identity for the\nGerrit user.\n\nThe external-id is then persisted on disk as a note under the\n`refs/meta/external-ids` ref of the `All-Users.git` repo, as documented\nin [1].\n\nAll credentials should be stored encrypted and protected at-rest, as the\ntoken could be used to impersonate the user associated with it.\n\nThis vulnerability has been exploited in the past on other OAuth-based\nintegrations [2].\n\nAvoid using plaintext oauth tokens for storing github external-ids by\nencrypting them first.\n\n[1] https://gerrit-documentation.storage.googleapis.com/Documentation/3.6.1/config-accounts.html#external-ids\n[2] https://github.blog/2022-04-15-security-alert-stolen-oauth-user-tokens/\n\nBug: Issue 16192\nChange-Id: I69c2add9170159ab8b9a31098cf35f184e678401\n"
    },
    {
      "commit": "2cf21319cb457a1464aade9862c27ceb9173c1b6",
      "tree": "ed6c72309842c9ce49b0fa231f5c4c73c6c34f30",
      "parents": [
        "7d398d5f25e13a99fec73e0c9121470a12e57d7e"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Sep 20 12:58:14 2022 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Sep 20 12:58:14 2022 +0200"
      },
      "message": "Remove test dependencies\n\nRemove jukito and junit from test dependencies as currently no tests\nexist within the github plugin.\n\nChange-Id: I692edf67ed3767d1ff929c22425a227c0557f9b2\n"
    },
    {
      "commit": "7d398d5f25e13a99fec73e0c9121470a12e57d7e",
      "tree": "55e0ae889863bf3555f45247b884e48db92814ad",
      "parents": [
        "12e208ce8eac3dd786775ca75f9426cc988e206f"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Sep 20 12:22:33 2022 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Sep 20 12:22:33 2022 +0200"
      },
      "message": "Remove unused GITHUB_GET_USER variable\n\nChange-Id: Iec817d693c3020bf3aebb39f3414c11a421e000c\n"
    },
    {
      "commit": "12e208ce8eac3dd786775ca75f9426cc988e206f",
      "tree": "f2944ab1d37f09dff9386167cc544b2a511985c6",
      "parents": [
        "fe692966516aa5c0b00dccaadcbdb5dee5687d78"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Sep 20 12:12:26 2022 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Sep 20 12:20:32 2022 +0200"
      },
      "message": "Remove unused constructor argument\n\nRemove unused `authConfig` from `GitHubOAuthConfig`\n\nChange-Id: I1d96a9b0e133d0d1b62be40c947742366a15bdcd\n"
    },
    {
      "commit": "fe692966516aa5c0b00dccaadcbdb5dee5687d78",
      "tree": "ffd0e369ac7174e38bb11db97262e4050c56e187",
      "parents": [
        "89f925b33acd429ead8331b1a825c377c74cc2fc"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri May 06 21:54:40 2022 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue May 10 11:26:35 2022 +0100"
      },
      "message": "Bump Apache Velocity to 2.3\n\nApache Velocity 2.3 is the latest version\nand relies on commons lang v3 as Gerrit 3.6\nrequires.\n\nAlso use the new artifact name velocity-engine-core and\nuse the Gerrit\u0027s static assets servlet for serving binary\nfiles as the new Velocity resource manager in v2 isn\u0027t able\nto read binary content.\n\nInject the Plugin instance for allowing the access and load\nof the plugin\u0027s own resources.\n\nBug: Issue 15897\nChange-Id: I5802c16167d9a0b8591cd42e0a7e9ef429e4d5a3\n"
    },
    {
      "commit": "0cc17c42ced017432064eab889962dc10bf3c70a",
      "tree": "5a250d26e728105b340c4d9a90cfdd9dbee793f3",
      "parents": [
        "0fe335747aa08f535d331ab9f79f727858219ed4",
        "89f925b33acd429ead8331b1a825c377c74cc2fc"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri May 06 17:06:42 2022 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri May 06 17:06:42 2022 +0100"
      },
      "message": "Merge branch \u0027stable-3.6\u0027\n\n* stable-3.6:\n  Bump Lombok to 1.18.22\n  Adapt to Gerrit stable-3.6\n\nChange-Id: I55532bfef8247387d22a45e137078b60dd2084cd\n"
    }
  ],
  "next": "89f925b33acd429ead8331b1a825c377c74cc2fc"
}
