)]}'
{
  "log": [
    {
      "commit": "9e1337d12deb4ae23dc9c8e4a4ab0660822cf139",
      "tree": "f9f7a90612d533b642f58264a7bd21990aace63a",
      "parents": [
        "15f26084cc2d1b2055e5fa5f9b0d5583883896a9"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Fri Dec 19 08:50:50 2025 +0100"
      },
      "committer": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Tue Apr 07 13:53:55 2026 +0200"
      },
      "message": "Use of gerrit_plugin and gerrit_plugin_tests rules from bazlets\n\nChange-Id: If025b0bba51fe3e9e517d1f20e795f5654fd6c7a\n"
    },
    {
      "commit": "15f26084cc2d1b2055e5fa5f9b0d5583883896a9",
      "tree": "aba29fc51f61f31902074f835ce8c779e5ad55e6",
      "parents": [
        "bfb522f79240f4baf3398952998bded95a804af2"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Jan 06 08:49:02 2026 +0000"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Jan 06 08:49:02 2026 +0000"
      },
      "message": "Fix UnnecessaryAssignment by removing @Mock from authConfig\n\nauthConfig is initialized manually in the test. Remove the @Mock\nannotation to avoid conflicting with Mockito’s automatic injection.\n\nChange-Id: I6b8ace8beace4c7ea42ba30378eed942ba68a731\n"
    },
    {
      "commit": "bfb522f79240f4baf3398952998bded95a804af2",
      "tree": "522aec574663fcab8bf28368ab1a7ab45001e66f",
      "parents": [
        "dc2b67185694c220a95525b6aeb717e663075e3c"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Dec 09 12:42:11 2025 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Dec 10 15:43:31 2025 +0100"
      },
      "message": "Use LDAP username in HTTP URLs when gitBasicAuthPolicy\u003dLDAP\n\nWhen Gerrit is configured with `gitBasicAuthPolicy \u003d LDAP`,\nGit-over-HTTP authentication is performed directly against the LDAP\nbackend.\n\nIn this mode, the LDAP login name (not the Gerrit username) is the\ncredential that must be used for HTTP BasicAuth to succeed.\n\nHowever, the download-commands plugin previously embedded the Gerrit\nusername in generated HTTP clone URLs, regardless of authentication\npolicy.\n\nThis change updates `HttpScheme` to select the LDAP login name (the\n`gerrit:` external ID) whenever `gitBasicAuthPolicy` is set to `LDAP`.\nIf no LDAP username exists, or LDAP authentication is not active, the\nexisting behavior is preserved and the Gerrit username continues to be\nused.\n\nThis ensures that download commands always embed a username that can\nactually authenticate under the configured Git-over-HTTP authentication\npolicy.\n\nBug: Issue 466122136\nChange-Id: I267b9ca01045056e540bd928d649321bb6c9ddc1\n"
    },
    {
      "commit": "dc2b67185694c220a95525b6aeb717e663075e3c",
      "tree": "bd3817d0b7b814e19bd4265f42332a5338e493d9",
      "parents": [
        "04a31c1a520eac9d1844acc52665d0892bc4e35f"
      ],
      "author": {
        "name": "Piotr Szlazak",
        "email": "piotr.szlazak@gmail.com",
        "time": "Thu Oct 09 22:10:55 2025 +0200"
      },
      "committer": {
        "name": "Piotr Szlazak",
        "email": "piotr.szlazak@gmail.com",
        "time": "Thu Oct 09 22:10:55 2025 +0200"
      },
      "message": "Add curl \u0027-f\u0027 option to fail on download problems\n\nBy default curl will exit with exit code \u00270\u0027 even if there\nwas a problem with the transfer. Option \u0027-f\u0027 will make curl\nto exit with error code \u002722\u0027 if HTTP response code was 400\nor higher. If there was a problem with transfer, it does not\nmake sense to process the next command - chmod.\nOption \u0027-f\u0027 was introduced in curl in version 4.0, released\nin 1998, so is safe to be used.\n\nChange-Id: I74b1669b48d10a690a290dae2c24480f3a6994c6\n"
    },
    {
      "commit": "04a31c1a520eac9d1844acc52665d0892bc4e35f",
      "tree": "8d5cde9899365b9702b7daeea03ea843c77ec2a9",
      "parents": [
        "09119a065739a5921b7ad8eef75c996ae4043d8a",
        "f4128b398a40dfc2c6054c4db60005838cf7385e"
      ],
      "author": {
        "name": "Sam Lewis",
        "email": "samclewis@google.com",
        "time": "Fri Jun 20 11:18:08 2025 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 20 11:18:08 2025 -0700"
      },
      "message": "Merge \"Add `Depot Tools` download scheme for download commands.\""
    },
    {
      "commit": "f4128b398a40dfc2c6054c4db60005838cf7385e",
      "tree": "3fa11a7113b617ec9a7af4c506ec1f6bd95359b3",
      "parents": [
        "978e803c87416eb9e96236446b15b167017c0385"
      ],
      "author": {
        "name": "Sam Lewis",
        "email": "samclewis@google.com",
        "time": "Fri Jun 20 11:08:20 2025 -0700"
      },
      "committer": {
        "name": "Sam Lewis",
        "email": "samclewis@google.com",
        "time": "Fri Jun 20 11:09:44 2025 -0700"
      },
      "message": "Add `Depot Tools` download scheme for download commands.\n\nThis adds a new download scheme for users to utilize `git cl patch` to\ndownload their changes. This is useful for teams that utilize the `Depot\nTools`.\n\nChange-Id: I078d4b71dc0b268b71fda033877b176852a36b49\nBug: 425283099\n"
    },
    {
      "commit": "09119a065739a5921b7ad8eef75c996ae4043d8a",
      "tree": "5aa6e9b7be869292f9ddf91f0107caaa55245a68",
      "parents": [
        "c9de9bcf68fc46e26c92076ff7dfad71106cf841"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Fri Mar 07 11:05:54 2025 +0100"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Fri Mar 07 11:07:48 2025 +0100"
      },
      "message": "Replace deprecated URL constructor\n\nSee https://inside.java/2023/02/15/quality-heads-up/\n\nChange-Id: I520a4baeb1442a1a357a88f1755447cd285a77d8\n"
    },
    {
      "commit": "c9de9bcf68fc46e26c92076ff7dfad71106cf841",
      "tree": "727f48af2ee15042f7a21b37922ad62b4c72a973",
      "parents": [
        "978e803c87416eb9e96236446b15b167017c0385"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Fri Mar 07 11:07:30 2025 +0100"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Fri Mar 07 11:07:30 2025 +0100"
      },
      "message": "Auto-format source code using gjf\n\nChange-Id: If68e29fe90009b5ae8006970ad43796e7d60d694\n"
    },
    {
      "commit": "978e803c87416eb9e96236446b15b167017c0385",
      "tree": "a3d6c6ba2eeec1a51ecfbd9b8e1bb2fdaeced1bf",
      "parents": [
        "2ccaaa5896d6065dc39c0407eb2c1c214d8803f9"
      ],
      "author": {
        "name": "Kaushik Lingarkar",
        "email": "kaushik.lingarkar@linaro.org",
        "time": "Tue Aug 22 11:05:41 2023 -0700"
      },
      "committer": {
        "name": "Ajay Gupta",
        "email": "ajay.gupta@linaro.org",
        "time": "Wed Feb 14 13:20:12 2024 +0530"
      },
      "message": "SshScheme: Provide an option to omit usernames in SSH URLs\n\nIncluding the username in the download URL can prevent IT admins from\nconfiguring hosts to redirect read-only traffic to regional replicas\nwhen the admins rely on the git url.insteadOf configuration. This is\nbecause git doesn\u0027t support anything except simple replacement of\nmatching strings, so there\u0027s no way to account for variable usernames in\na host-wide /etc/gitconfig file.\n\nThe default stays as always including the username in the SSH download\ncommands.\n\nRelease-Notes: Added an option to omit SSH usernames from download commands\nChange-Id: I49f3b85adc3dae2d440366c919fb656ca95b812f\n"
    },
    {
      "commit": "2ccaaa5896d6065dc39c0407eb2c1c214d8803f9",
      "tree": "1bf28fec50dbdb8e4df93e72b1a48741e96ced35",
      "parents": [
        "4eb9ae135b88549b127dbe3e02a233f08b7bab6d"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Dec 19 00:50:10 2023 +0100"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Fri Jan 12 14:28:00 2024 +0100"
      },
      "message": "Clone: configure pushUrl if sshdAdvertisedPrimaryAddress is set\n\nThe new option `plugin.download-commands.sshdAdvertisedPrimaryAddress`\nspecifies the address clients should be configured to reach a primary\nGerrit instance.\n\nThis may differ from `sshd.listenAddress` if fetch is served from\nanother address. An example is a setup where upload-pack requests\nare served by a Gerrit replica and receive-pack by a Gerrit primary.\nSince ssh cannot be load balanced on layer 7 the addresses of the\nprimary and replica need to be different.\n\nConfigure `remote.origin.pushUrl` in the clone command installing the\ncommit-msg hook which is typically used if the client is used to push\nnew changes.\n\nChange-Id: I69a271c55fe53a4d1c01b5f24f1a6fd8313e7ba8\n"
    },
    {
      "commit": "4eb9ae135b88549b127dbe3e02a233f08b7bab6d",
      "tree": "60202f5abe5aad39d0c23af760d5edc8aa6f9161",
      "parents": [
        "42b608a64bdb1350656b2ca09643ed4173cd6e73"
      ],
      "author": {
        "name": "Dariusz Luksza",
        "email": "dariusz.luksza@gmail.com",
        "time": "Tue Sep 26 15:26:05 2023 +0100"
      },
      "committer": {
        "name": "Dariusz Luksza",
        "email": "dariusz.luksza@gmail.com",
        "time": "Fri Sep 29 10:36:03 2023 +0100"
      },
      "message": "Add `--recurse-submodules` flag to supporting commands\n\nWhen a repository contains git submodules, the simple `git checkout`\ncommand will leave the working tree with uncommited changes to the\nsubmodule references (aka dirty). This then requires a second git command\nto synchronize submodules.\n\nThe checkout command already has the `--recurse-submodules` argument\nthat will fetch submodules of checkout, ensuring that repository is in\nconsistent state.\n\nAlso using this flag with repositories that doesn\u0027t have submodules, the\ncheckout will succeed without any complaint.\n\nThe downside is that checkout command could issue multiple parallel\nfetch calls that may generate high load on the server. This is why to\nenable this feature, a modification to the plugin config is required.\n\nThis change adds a new plugin configuraiton option:\n`download.recurseSubmodules`, by default set to `false`. That will add\n`--recurse-submodules` flag to the \"checkout\", \"branch\", \"reset\" and\n\"pull\" download commands.\n\nBug: Issue 302090044\nChange-Id: I7b003dbd0687f173e8166a5ede931f773db5439c\n"
    },
    {
      "commit": "42b608a64bdb1350656b2ca09643ed4173cd6e73",
      "tree": "dab7d251222c2d42745b53e5a47a55f8fb5d0009",
      "parents": [
        "b90e523f589a0e2902823233010163f453243926"
      ],
      "author": {
        "name": "Nitzan Gur-Furman",
        "email": "nitzan@google.com",
        "time": "Tue Aug 01 11:06:43 2023 +0000"
      },
      "committer": {
        "name": "Nitzan Gur-Furman",
        "email": "nitzan@google.com",
        "time": "Tue Aug 01 11:06:43 2023 +0000"
      },
      "message": "Update plugin with DownloadCommand enum move\n\nThe corelative Gerrit change is:\nhttps://gerrit-review.git.corp.google.com/c/gerrit/+/381374\n\nChange-Id: I63d0cbacc491721e6a13fbb1ae2d206449e9d75f\n"
    },
    {
      "commit": "b90e523f589a0e2902823233010163f453243926",
      "tree": "07a2205e64fc4edd115557f2b9e3cfe7ce3fa90f",
      "parents": [
        "b4209a5a4c334077b255002cbadc2ef659adee3c"
      ],
      "author": {
        "name": "Rikard Almgren",
        "email": "rikardal@axis.com",
        "time": "Tue Mar 21 12:32:34 2023 +0100"
      },
      "committer": {
        "name": "Rikard Almgren",
        "email": "rikardal@axis.com",
        "time": "Tue Mar 21 12:44:31 2023 +0100"
      },
      "message": "Only chmod if commit-msg hook was fetched successfully\n\nThere is no reason to attempt to chmod the commit-msg hook if it\nfailed to download, so use \u0027\u0026\u0026\u0027 instead of \u0027;\u0027.\n\nSome shells, and some shell extensions in particular (f.i. zsh and\noh-my-zsh), have url magic features that automatically attempt to\nescape characters in conjunction with urls.\n\nThis can cause the current implementation to fail as it would escape\nthe \u0027;\u0027 because it was connected to the curl command argument.\nThis in turn causes the curl command to fail as it would interpret\nthe chmod command as another argument to curl.\n\nThis resolves both issues by chaining the command instead.\n\nChange-Id: I4304abbb11b7be63686bec51b200874fa00eab81\n"
    },
    {
      "commit": "b4209a5a4c334077b255002cbadc2ef659adee3c",
      "tree": "954f551ee0b9b616f860d11fba34578f82a576eb",
      "parents": [
        "b83ce6746fe404da5f4709d8f8270a99f04c800e",
        "ff885b0872d4fdd2147b371234513b0c58b6fabb"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@gmail.com",
        "time": "Mon Mar 13 10:40:24 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 13 10:40:24 2023 +0000"
      },
      "message": "Merge \"Allow to hide download schemes in the UI\""
    },
    {
      "commit": "ff885b0872d4fdd2147b371234513b0c58b6fabb",
      "tree": "acb772107493f7d6c557d6de790d00ee9f202cd2",
      "parents": [
        "71331e15af5a62ee7b13dee6ebdadf23d7e75a40"
      ],
      "author": {
        "name": "Thomas Draebing",
        "email": "thomas.draebing@sap.com",
        "time": "Wed Mar 08 16:44:26 2023 +0100"
      },
      "committer": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Mon Mar 13 08:18:00 2023 +0000"
      },
      "message": "Allow to hide download schemes in the UI\n\nDepends-On: I50b3759f3e1be750423c8077969e553936f20212\nChange-Id: I6024159b029cd3c7ac644af88a301e0e7c1ef899\n"
    },
    {
      "commit": "b83ce6746fe404da5f4709d8f8270a99f04c800e",
      "tree": "932a4b7555c5f805a7d5a71046055decf027897c",
      "parents": [
        "90b37d2cad10c37661abb29587ac4ccec8775727"
      ],
      "author": {
        "name": "Sven Selberg",
        "email": "svense@axis.com",
        "time": "Tue Feb 21 11:07:40 2023 +0100"
      },
      "committer": {
        "name": "Sven Selberg",
        "email": "svense@axis.com",
        "time": "Thu Mar 02 14:23:00 2023 +0100"
      },
      "message": "Consistently use `git rev-parse` to find hooks-dir\n\nChange-Id: I2ce560a2d9d4492e0c9352d723d6cd205815c5cb\n"
    },
    {
      "commit": "90b37d2cad10c37661abb29587ac4ccec8775727",
      "tree": "cd9a8540349ba3433654ea78ffd32f6e14ebffdc",
      "parents": [
        "f0c9b9ec028f1a50e694f8265290460250deabaa"
      ],
      "author": {
        "name": "Sven Selberg",
        "email": "svense@axis.com",
        "time": "Tue Feb 21 10:20:11 2023 +0100"
      },
      "committer": {
        "name": "Sven Selberg",
        "email": "svense@axis.com",
        "time": "Thu Mar 02 14:21:54 2023 +0100"
      },
      "message": "Always use http to get commit-msg hook\n\nHttp should always be available from primary servers and using scp\nis getting complicated since the implementation of scp varies between\ndifferent OpenSSH versions.\n\nBug: Issue 16705\nBug: Issue 15944\nChange-Id: Ifb61fa66325d771cc606814f38af4d99d0d68c87\n"
    },
    {
      "commit": "f0c9b9ec028f1a50e694f8265290460250deabaa",
      "tree": "4d6973f96210f9fe3f3ae2ce1591e3c20ad93a91",
      "parents": [
        "a16ebc6cdaaa4db5e5a2b6d062bb0ebbb3d3d0f4"
      ],
      "author": {
        "name": "Sven Selberg",
        "email": "svense@axis.com",
        "time": "Thu Mar 02 13:04:01 2023 +0100"
      },
      "committer": {
        "name": "Sven Selberg",
        "email": "svense@axis.com",
        "time": "Thu Mar 02 14:20:47 2023 +0100"
      },
      "message": "Add test for CloneWithCommitMsgHook\n\nThe other CloneCommands are basically just factories whereas the\nCloneWithCommitMsgHook has logic for when parts of the command\nshould or should not be added, and which combination of\nsub-commands are valid.\nTo be able to confidently change the behavior of CloneWithCommitMsgHook\na test that covers this logic is valuable.\n\nChange-Id: I22185f73e5eb9afebb602464fe9ca6073b1377e5\n"
    },
    {
      "commit": "a16ebc6cdaaa4db5e5a2b6d062bb0ebbb3d3d0f4",
      "tree": "3a412fd6b0a243421e9257279595b1d31a767976",
      "parents": [
        "a649bdb1c576550326c42e737455a2b0883a94b0",
        "107b225848f34169036d9022efc4e0b85df26b90"
      ],
      "author": {
        "name": "Edwin Kempin",
        "email": "ekempin@google.com",
        "time": "Thu Oct 13 16:08:43 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 13 16:08:43 2022 +0000"
      },
      "message": "Merge \"Annotate methods that return a definitely null value with @Nullable\""
    },
    {
      "commit": "107b225848f34169036d9022efc4e0b85df26b90",
      "tree": "257b8a97ad4ac034d21add47e2c9f1989475f573",
      "parents": [
        "71331e15af5a62ee7b13dee6ebdadf23d7e75a40"
      ],
      "author": {
        "name": "Edwin Kempin",
        "email": "ekempin@google.com",
        "time": "Wed Oct 12 13:04:06 2022 +0200"
      },
      "committer": {
        "name": "Edwin Kempin",
        "email": "ekempin@google.com",
        "time": "Wed Oct 12 13:04:06 2022 +0200"
      },
      "message": "Annotate methods that return a definitely null value with @Nullable\n\nWe intend to enable the ReturnMissingNullable errorprone pattern in\nGerrit core and this fixes the current issues.\n\nSigned-off-by: Edwin Kempin \u003cekempin@google.com\u003e\nChange-Id: I077ad0ddfa8ce0c07dc08cc1e4414e35830cd843\n"
    },
    {
      "commit": "a649bdb1c576550326c42e737455a2b0883a94b0",
      "tree": "f6353c7f3fe0e2398444cdc62ecd7d4711f8f927",
      "parents": [
        "71331e15af5a62ee7b13dee6ebdadf23d7e75a40"
      ],
      "author": {
        "name": "Edwin Kempin",
        "email": "ekempin@google.com",
        "time": "Tue Jan 18 12:41:08 2022 +0100"
      },
      "committer": {
        "name": "Edwin Kempin",
        "email": "ekempin@google.com",
        "time": "Tue Jan 18 12:41:08 2022 +0100"
      },
      "message": "Prefer ImmutableList to the convenience methods in List\n\nFix this warning from JdkImmutableCollections ErrorProne pattern.\n\nSigned-off-by: Edwin Kempin \u003cekempin@google.com\u003e\nChange-Id: I70aa2a6c23dd252a89f1bb09d5e8ac3351a533f3\n"
    },
    {
      "commit": "71331e15af5a62ee7b13dee6ebdadf23d7e75a40",
      "tree": "8ece2c42132909e2c8e3424f48c8df8a3a6c9a62",
      "parents": [
        "7f736175df9c18e490d7d21719e35a978706ca6e"
      ],
      "author": {
        "name": "Edwin Kempin",
        "email": "ekempin@google.com",
        "time": "Tue Jan 18 09:48:20 2022 +0100"
      },
      "committer": {
        "name": "Edwin Kempin",
        "email": "ekempin@google.com",
        "time": "Tue Jan 18 09:48:20 2022 +0100"
      },
      "message": "Throw IllegalStateException instead of RuntimeException\n\nIt\u0027s a best practise to treat base exception classes as abstract and\nthrow concrete exceptions instead.\n\nSigned-off-by: Edwin Kempin \u003cekempin@google.com\u003e\nChange-Id: I0eea0f960171a34935221de73965a6f56f777b02\n"
    },
    {
      "commit": "7f736175df9c18e490d7d21719e35a978706ca6e",
      "tree": "76656fd0d191fee224c5f3bb6f5b642430166683",
      "parents": [
        "1a303596d8aa08cf3135819eaf8451d1a2e004b6"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sat Jan 15 12:18:54 2022 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sun Jan 16 12:11:33 2022 +0100"
      },
      "message": "URL encode username in http and ssh schemes\n\nAlso add a test to verify that username was correctly encoded. This\nchange depends on change in gerrit core that marked DownloadConfig ctor\npublic.\n\nDepends-On: https://gerrit-review.googlesource.com/c/gerrit/+/328279\nChange-Id: Id7d24530607f6d05c5034bac1a91b3270c4cb698\n"
    },
    {
      "commit": "1a303596d8aa08cf3135819eaf8451d1a2e004b6",
      "tree": "e5f49cde168f98ceff9198d3b384a65ec7bfc76d",
      "parents": [
        "6f58c1eb6b2e9cd26d519484a3299fd7a86392e3"
      ],
      "author": {
        "name": "Edwin Kempin",
        "email": "ekempin@google.com",
        "time": "Wed Dec 22 13:36:14 2021 +0100"
      },
      "committer": {
        "name": "Edwin Kempin",
        "email": "ekempin@google.com",
        "time": "Wed Dec 22 13:36:14 2021 +0100"
      },
      "message": "Adapt to enabling error level for the UnnecessaryParentheses bug pattern\n\nFix the current issues so that the build continues to work.\n\nBug: Issue 15082\nSigned-off-by: Edwin Kempin \u003cekempin@google.com\u003e\nChange-Id: Iba2e0421eddcc655f77eb328e8aba6216e4f7cdf\n"
    },
    {
      "commit": "6f58c1eb6b2e9cd26d519484a3299fd7a86392e3",
      "tree": "7a2bc06d94636c735ccb551eced7f9c45735e0c5",
      "parents": [
        "d2f0cae51a269ca660f221172cf010e2d528b661"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Fri Nov 19 09:10:58 2021 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Fri Nov 19 09:17:25 2021 -0500"
      },
      "message": "document the new branch \u0026 reset commands\n\nChange-Id: I6c374480f8cd99722077534c489550e30415e61f\n"
    },
    {
      "commit": "d2f0cae51a269ca660f221172cf010e2d528b661",
      "tree": "90d4795552b871c356908892e2db0f34c97fee9f",
      "parents": [
        "c99bc8457910ec19315c1384e20267288b019592"
      ],
      "author": {
        "name": "Edwin Kempin",
        "email": "ekempin@google.com",
        "time": "Tue Oct 19 15:13:35 2021 +0200"
      },
      "committer": {
        "name": "Edwin Kempin",
        "email": "ekempin@google.com",
        "time": "Tue Oct 19 15:20:50 2021 +0200"
      },
      "message": "Fix ErrorProne issues for JavaLangClash bug pattern\n\nThis requires renaming Module classes that clash with java.lang.Module.\n\nSigned-off-by: Edwin Kempin \u003cekempin@google.com\u003e\nChange-Id: I9dfb6f2d5e4b07d6ce346bea7aa8e6370bdad678\n"
    },
    {
      "commit": "c99bc8457910ec19315c1384e20267288b019592",
      "tree": "54797c2d7bd67dab24c31619e0ab47fa99854e67",
      "parents": [
        "774e9159128a72a76a0b226033b038c8f24fd88b"
      ],
      "author": {
        "name": "Edwin Kempin",
        "email": "ekempin@google.com",
        "time": "Thu Jun 17 10:34:25 2021 +0200"
      },
      "committer": {
        "name": "Edwin Kempin",
        "email": "ekempin@google.com",
        "time": "Thu Jun 17 10:38:50 2021 +0200"
      },
      "message": "Add a toc file for the plugin documentation\n\nAt Google this file is required to host the plugin documentation.\n\nSigned-off-by: Edwin Kempin \u003cekempin@google.com\u003e\nChange-Id: I8744b3f0530b212876cb5a254c8d46949397ad81\n"
    },
    {
      "commit": "774e9159128a72a76a0b226033b038c8f24fd88b",
      "tree": "9e2931b9cf38fe858871e6e103913eb36eede08b",
      "parents": [
        "5bd359c08e10b93d2c08762f75cde01a14e45fc6"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Thu Apr 29 10:58:44 2021 -0400"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Thu Apr 29 10:58:44 2021 -0400"
      },
      "message": "config: update repo download config options\n\nThis was renamed to just \"repo\" a while ago but the docs were missed.\n\nChange-Id: Id389374f886d37e69bd99736ab0a17087ef5bae9\n"
    },
    {
      "commit": "5bd359c08e10b93d2c08762f75cde01a14e45fc6",
      "tree": "393cefa5da9c2a301b6ca0fd934fb17b708796ed",
      "parents": [
        "cfa03bc5e7a7e1e27b83f2dba60e9a9eb7c8f4aa"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Jul 22 03:14:20 2020 -0400"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Nov 25 17:00:15 2020 -0500"
      },
      "message": "use unqiue constants for each download command\n\nSince these are used to record user preferences, make sure each one\nis unique and we don\u0027t re-use existing ones.\n\nChange-Id: I4cea0f1ac22d70db9211c05edd633dfb98713560\n"
    },
    {
      "commit": "cfa03bc5e7a7e1e27b83f2dba60e9a9eb7c8f4aa",
      "tree": "f457337cdccdb0ec655aa5d3c0d6f199ff2e0dc4",
      "parents": [
        "87e3930cea7c06aea454998abdddf6515a9f103b",
        "bd6764866a87ba5eb498191226d8ea0c801ba185"
      ],
      "author": {
        "name": "Edwin Kempin",
        "email": "ekempin@google.com",
        "time": "Wed Nov 25 09:36:24 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 25 09:36:24 2020 +0000"
      },
      "message": "Merge \"rename REPO_DOWNLOAD to REPO\""
    },
    {
      "commit": "87e3930cea7c06aea454998abdddf6515a9f103b",
      "tree": "5463eeae9f30017c3ad650867117cc4de5e79132",
      "parents": [
        "6b6c50e4f487b0f1ebf316e0625669260b226879"
      ],
      "author": {
        "name": "Youssef Elghareeb",
        "email": "ghareeb@google.com",
        "time": "Fri Aug 14 08:47:26 2020 +0000"
      },
      "committer": {
        "name": "Youssef Elghareeb",
        "email": "ghareeb@google.com",
        "time": "Fri Aug 14 08:47:26 2020 +0000"
      },
      "message": "Revert \"repo: include patchset number in commands\"\n\nThis reverts commit 6b6c50e4f487b0f1ebf316e0625669260b226879.\n\nReason for revert: This change is affecting many users in chromium while editing a change from the UI. https://bugs.chromium.org/p/gerrit/issues/detail?id\u003d13277\n\nChange-Id: I8300978c1454d6cb6c66a0952941871c2ac956c1\n"
    },
    {
      "commit": "6b6c50e4f487b0f1ebf316e0625669260b226879",
      "tree": "a330eacd672976d47660852841ab90b9f2f35c21",
      "parents": [
        "fd650ca386c382b42d30e7ad72279bfeb311aee4"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Thu Jul 02 02:37:13 2020 -0400"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Jul 22 03:39:06 2020 -0400"
      },
      "message": "repo: include patchset number in commands\n\nSince we don\u0027t include the ps number, repo will look up the latest\none and use that.  If the user is viewing an older ps, that means\nthe repo command won\u0027t actually download the version they have\nselected which can be quite confusing.\n\nThe git version already includes the fully change id + ps num, so\nthis brings repo up to parity.\n\nChange-Id: I6a4cd56cf9960d626770f98837028119aeaed4d4\n"
    },
    {
      "commit": "bd6764866a87ba5eb498191226d8ea0c801ba185",
      "tree": "f457337cdccdb0ec655aa5d3c0d6f199ff2e0dc4",
      "parents": [
        "fd650ca386c382b42d30e7ad72279bfeb311aee4"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Jul 22 03:04:49 2020 -0400"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Jul 22 03:10:08 2020 -0400"
      },
      "message": "rename REPO_DOWNLOAD to REPO\n\nThe \"download\" suffix is redundant and reflects how `repo` used to\nbe used in the download plugin -- as kind of a pseudo download\nbolted onto the side.  Since we\u0027ve reworked the plugin, we can\nrename this constant to better reflect its usage.\n\nChange-Id: I0b094d971a8591a46b1b1f05cbbfe32e8483f207\n"
    },
    {
      "commit": "fd650ca386c382b42d30e7ad72279bfeb311aee4",
      "tree": "5463eeae9f30017c3ad650867117cc4de5e79132",
      "parents": [
        "ea7b33154997f4eae6481fbb3d5f3e47a63187a4"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "dpursehouse@digital.ai",
        "time": "Thu Jun 25 14:27:15 2020 +0900"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jul 17 07:43:45 2020 +0000"
      },
      "message": "New command: \"Reset To\"\n\nAdd a new command that allows to reset the current branch to the commit\nthat was fetched. This is useful in cases when the user is working on a\nlocal branch and the existing commands are not appropriate:\n\n- \"Checkout\" will check out the FETCH_HEAD, i.e. moving off the current\n  branch and leaving the local repository in \u0027detached head\u0027 state.\n\n- \"Cherry-Pick\" will commit the fetched change again, resulting in a\n  \u0027new\u0027 commit (i.e. changed sha1) which will result in a new patch set\n  if the user creates any commits on top of it and pushes for review.\n\nChange-Id: I683f88aa0d8ad6a6dd91f341bd23d363d329e174\n"
    },
    {
      "commit": "ea7b33154997f4eae6481fbb3d5f3e47a63187a4",
      "tree": "27368b4a5e61e1f09d09db130198f65e20525250",
      "parents": [
        "c4ef993fa5e8578641d6447c831ace13743dd5de"
      ],
      "author": {
        "name": "Edwin Kempin",
        "email": "ekempin@google.com",
        "time": "Fri Jul 10 15:55:02 2020 +0200"
      },
      "committer": {
        "name": "Edwin Kempin",
        "email": "ekempin@google.com",
        "time": "Fri Jul 10 15:56:51 2020 +0200"
      },
      "message": "QuoteUtil: Remove unneeded nesting\n\nAccording to our project style guidelines we avoid unneeded nesting.\nAlso in Eclipse this is shown as a warning.\n\nSigned-off-by: Edwin Kempin \u003cekempin@google.com\u003e\nChange-Id: I2b2f41512ca49715937ee518dc0854732182facc\n"
    },
    {
      "commit": "c4ef993fa5e8578641d6447c831ace13743dd5de",
      "tree": "ead20066ff160756712671e78f5871cdef57cc35",
      "parents": [
        "47b783ea75036664dd591d2d3f1bcd06b68cdd5e"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Thu Jul 02 02:35:17 2020 -0400"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Thu Jul 02 02:35:17 2020 -0400"
      },
      "message": "avoid quoting on basic strings\n\nShells don\u0027t need quoting for many basic characters, so make the\nlogic a bit smarter by omitting the quotes when the string consists\nentirely of those \"safe\" characters.\n\nBug: Issue 10021\nChange-Id: I8410572007d5700ce0fd7642e3322c0dc89e31cc\n"
    },
    {
      "commit": "47b783ea75036664dd591d2d3f1bcd06b68cdd5e",
      "tree": "6d096247938376b757c5d51eaa0153c0abd9bc30",
      "parents": [
        "e26ed31aaf070ff884e96b9a09d39c20437de6cb"
      ],
      "author": {
        "name": "Paladox none",
        "email": "thomasmulhall410@yahoo.com",
        "time": "Mon Apr 13 03:25:42 2020 +0000"
      },
      "committer": {
        "name": "Paladox none",
        "email": "thomasmulhall410@yahoo.com",
        "time": "Mon Apr 13 05:40:04 2020 +0000"
      },
      "message": "Replace using refToId with Change.Id.fromRef\n\nThis fixes an issue where refToId returned null for change edits,\nChange.Id.fromRef explicity adds change edit support,\nso swapping from using refToId() to Change.Id.fromRef\nfixes the issue. On the plus we\u0027re using a core method\ninstead of duplicating things.\n\nBug: Issue 12575\nChange-Id: Id4619348fc7498dab69b4d888f360097bd9e80e3\n"
    },
    {
      "commit": "e26ed31aaf070ff884e96b9a09d39c20437de6cb",
      "tree": "f1a31aa65e3af5e3bf0a0bfdeaa51505b0db0366",
      "parents": [
        "3f5a024fd46f30f4646bfceb285763e44fda15a7"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Apr 02 11:23:28 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Apr 02 11:45:19 2020 -0400"
      },
      "message": "Replace the Google-specific \u0027CL\u0027 term with \u0027change\u0027\n\nChange-Id: Ic97e649916b2316298da64c41ae0ba1eb6738a8f\n"
    },
    {
      "commit": "3f5a024fd46f30f4646bfceb285763e44fda15a7",
      "tree": "25e7703c0418f8de871366fcf0d023b7be79f299",
      "parents": [
        "48e143ad2dd5b4e4dffaa6646ac826b4e38083ce"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sat Mar 14 12:52:35 2020 -0400"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Thu Mar 26 11:47:32 2020 +0900"
      },
      "message": "Add a checkout+branch command\n\nBug: Issue 11609\nChange-Id: Ic8307132782e42b58a1652b8975176730b2f86c0\n"
    },
    {
      "commit": "48e143ad2dd5b4e4dffaa6646ac826b4e38083ce",
      "tree": "b280786540e48361b46a9502655942d7f2b554b9",
      "parents": [
        "5c50f9b17e616fd84d2c561822161fff46bbf902"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Thu Mar 26 11:47:24 2020 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Thu Mar 26 11:47:24 2020 +0900"
      },
      "message": "GitDownloadCommand#getRepoCommand: Add Javadoc to prevent \u0027unused\u0027 warnings\n\nChange-Id: Ib4ab2165755c9889ed01dc57318a63a7fb682b86\n"
    },
    {
      "commit": "5c50f9b17e616fd84d2c561822161fff46bbf902",
      "tree": "aed876c744622fdb2b1d0a7ff65f0012a5e74eca",
      "parents": [
        "1b98be8d371e68237182df0f04361017f2be2ea8"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Oct 02 18:11:31 2019 -0400"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sat Mar 14 16:51:35 2020 +0000"
      },
      "message": "Refactor repo commands\n\nWe\u0027ve had a single \"repo command\" stuffed in the download UI which\ndoesn\u0027t make a lot of sense.  The command types are more about how\nthey mutate your local checkout, not the commands used to download.\n\nLets merge the repo-vs-git logic into GitDownloadCommand directly.\nWe create separate \"getRepoCommand\" and \"getCommand\" methods for\ndownstream classes to extend with the default \"getRepoCommand\"\ndefaulting to null.\n\nBug: Issue 11594\nChange-Id: I6848c431975ec4db3aa09a160af5198b93ce5bb9\n"
    },
    {
      "commit": "1b98be8d371e68237182df0f04361017f2be2ea8",
      "tree": "8feb48365072675f47b187c0b4be54f25b2e0b83",
      "parents": [
        "eef164d087e7ab786db910c771dd8675a8194d33",
        "41c61bf8c1869bff4e0b436f69478c2137d0ca07"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Feb 20 19:52:25 2020 -0500"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Feb 20 19:52:25 2020 -0500"
      },
      "message": "Merge branch \u0027stable-2.16\u0027\n\n* stable-2.16:\n  Set SSH default port to 22\n\nChange-Id: Ib913a2dac90602e54bd49112093b1842edfb74f7\n"
    },
    {
      "commit": "41c61bf8c1869bff4e0b436f69478c2137d0ca07",
      "tree": "a29c8f8f002919884d2dadd93d2e647b77292888",
      "parents": [
        "697ca3783add1c8fa406d60f7821ab6db7c1bfec",
        "c80d8fec81c3f9530ed07f83bc09fd73629522cd"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Tue Feb 18 13:20:03 2020 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Tue Feb 18 13:21:35 2020 +0900"
      },
      "message": "Merge branch \u0027stable-2.15\u0027 into stable-2.16\n\n* stable-2.15:\n  Set SSH default port to 22\n\nChange-Id: I7fa99711a5938542eae97858ddc3b998efd3a374\n"
    },
    {
      "commit": "c80d8fec81c3f9530ed07f83bc09fd73629522cd",
      "tree": "9c1df28037eb905d18c63e5cc5dc76dd8f7e9655",
      "parents": [
        "bcfb05cbd1200422b81e9ac2ce824868ff74f252"
      ],
      "author": {
        "name": "Orgad Shaneh",
        "email": "orgad.shaneh@audiocodes.com",
        "time": "Mon Dec 09 09:13:26 2019 +0200"
      },
      "committer": {
        "name": "Orgad Shaneh",
        "email": "orgads@gmail.com",
        "time": "Tue Dec 10 18:21:17 2019 +0000"
      },
      "message": "Set SSH default port to 22\n\nIf nothing is configured, the advertised ssh address is *:29418, and it\nis translated to host:29418.\n\nIf sshd.listenAddress is configured without a port, then the advertised\naddress is host:29418.\n\nIf it is configured with port 22, the advertised address is host, without\nthe port.\n\nThe logic in SshScheme assumed that \"no port\" is 29418, which is\nincorrect.\n\nChange-Id: I8b4717a1f5765272b4c3bd7683750ae8fd12a4d5\n"
    },
    {
      "commit": "eef164d087e7ab786db910c771dd8675a8194d33",
      "tree": "a8cf636f2462c51acc36b39410f667faf05d7251",
      "parents": [
        "addee7fe76fdfe8b1929e3dd5d4c31b57b2f24a6"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sun May 26 14:00:09 2019 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Oct 15 18:44:36 2019 +0200"
      },
      "message": "Rename reviewdb package to entities\n\nChange-Id: I599253839b087238f81fb11c572a8a2e1802acba\n"
    },
    {
      "commit": "addee7fe76fdfe8b1929e3dd5d4c31b57b2f24a6",
      "tree": "b19ab415657447d3e25e8333d43db30a020c1066",
      "parents": [
        "891455076417dd097fdfd63f4afc0d28a3e85aff"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Oct 02 13:46:48 2019 -0400"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Oct 02 13:46:48 2019 -0400"
      },
      "message": "improve gitiles browsing\n\nChange-Id: Ib739165f487eb2bd018d5ea9a1e24b24add64ec7\n"
    },
    {
      "commit": "891455076417dd097fdfd63f4afc0d28a3e85aff",
      "tree": "774ef0d13767bc7d7d9af1172ee3eef8738e0571",
      "parents": [
        "697ca3783add1c8fa406d60f7821ab6db7c1bfec"
      ],
      "author": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Fri Apr 19 09:14:17 2019 -0700"
      },
      "committer": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Fri Apr 19 09:17:19 2019 -0700"
      },
      "message": "Adapt to Project.NameKey refactoring\n\nChange-Id: Ie1534825cb461b3156a85a2afbbd5065a5162d05\n"
    },
    {
      "commit": "697ca3783add1c8fa406d60f7821ab6db7c1bfec",
      "tree": "b687b0e82c5477071d0ac68b6ca512bbe255da8e",
      "parents": [
        "22495f7aaa9f91b55c0482cefe27bb117d1869c9",
        "bcfb05cbd1200422b81e9ac2ce824868ff74f252"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Thu Mar 14 08:57:28 2019 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Thu Mar 14 08:57:28 2019 +0900"
      },
      "message": "Merge branch \u0027stable-2.15\u0027\n\n* stable-2.15:\n  Format with google-java-format 1.7\n\nChange-Id: Id8d61153874989dcad7e0b2deeaaf191ff2e183e\n"
    },
    {
      "commit": "bcfb05cbd1200422b81e9ac2ce824868ff74f252",
      "tree": "489ca9e7e0263c22e8c0a8444ad34b61b4b5d9ac",
      "parents": [
        "7bd2008be31497696e4818f4a4d91b317251c9ac"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Thu Feb 28 16:48:01 2019 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Thu Feb 28 16:48:01 2019 +0900"
      },
      "message": "Format with google-java-format 1.7\n\nChange-Id: I4c053b01b8948c15aa2b3feb7790153b3ded9d4e\n"
    },
    {
      "commit": "22495f7aaa9f91b55c0482cefe27bb117d1869c9",
      "tree": "faaa04d6e8fcc4cf52920ad23d687b1edcff21c8",
      "parents": [
        "ce8f07234c96e563cfc60aae33b64e2148e0e192",
        "7bd2008be31497696e4818f4a4d91b317251c9ac"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Wed Jan 16 15:22:46 2019 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Wed Jan 16 15:22:46 2019 +0900"
      },
      "message": "Merge branch \u0027stable-2.15\u0027\n\n* stable-2.15:\n  Assure that project is quoted in download command\n\nChange-Id: I5e4647a34c09b5e940756b295857871e3e5fecfb\n"
    },
    {
      "commit": "7bd2008be31497696e4818f4a4d91b317251c9ac",
      "tree": "63be1fd4325889fb66cbe956fe5b38961fb066ae",
      "parents": [
        "29b640b13735447a4407f0d2d35cdfc908fe86f7"
      ],
      "author": {
        "name": "Eryk Szymanski",
        "email": "eryksz@gmail.com",
        "time": "Wed Nov 14 14:25:50 2018 -0800"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Tue Jan 15 08:24:09 2019 +0900"
      },
      "message": "Assure that project is quoted in download command\n\nBug: Issue 10021\nChange-Id: I7f7aa6dce20b642c30ab80e869116beed60e2947\nSigned-off-by: Eryk Szymanski \u003ceryksz@gmail.com\u003e\n"
    },
    {
      "commit": "ce8f07234c96e563cfc60aae33b64e2148e0e192",
      "tree": "c40b097194acde55ab8e6ed2dcc47ad8b8101d37",
      "parents": [
        "edd715618415d9a5e03b4555d9a2d3cca8fff6e8",
        "29b640b13735447a4407f0d2d35cdfc908fe86f7"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Mon Jan 14 17:21:30 2019 -0500"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Mon Jan 14 17:21:54 2019 -0500"
      },
      "message": "Merge branch \u0027stable-2.15\u0027\n\n* stable-2.15:\n  Make .git/hooks directory\n\nChange-Id: If06a1256d97e8989373074b1821b4207a3325d54\n"
    },
    {
      "commit": "29b640b13735447a4407f0d2d35cdfc908fe86f7",
      "tree": "051c02be01edbbd9ec690bbbdccfd64021091aab",
      "parents": [
        "6669a16692687aeda81ccc4ab938fca59a5fa14a",
        "55e0140f18349964077c78da0f6eb0eb592ba54b"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Mon Jan 14 17:20:15 2019 -0500"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Mon Jan 14 17:20:59 2019 -0500"
      },
      "message": "Merge branch \u0027stable-2.14\u0027 into stable-2.15\n\n* stable-2.14:\n  Make .git/hooks directory\n\nChange-Id: I6eb852fe39819d324b768b8c13c026760871263e\n"
    },
    {
      "commit": "55e0140f18349964077c78da0f6eb0eb592ba54b",
      "tree": "884f9826fe7e959f11bb8248ad6b88fa68ef04d0",
      "parents": [
        "d2f0920fac4838da70e83a03237ab97413960ec6"
      ],
      "author": {
        "name": "Paladox none",
        "email": "thomasmulhall410@yahoo.com",
        "time": "Sat Jan 05 15:47:08 2019 +0000"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Wed Jan 09 07:35:18 2019 +0000"
      },
      "message": "Make .git/hooks directory\n\nChange-Id: I2b13edbc2a57ca0659f93fbdae9e054e4785ae6d\n"
    },
    {
      "commit": "edd715618415d9a5e03b4555d9a2d3cca8fff6e8",
      "tree": "631e7b96d7a03d624b6c46027166dac21a5c77dc",
      "parents": [
        "cf58d79bc034e8904aa459d8974df5796a734e1d",
        "6669a16692687aeda81ccc4ab938fca59a5fa14a"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Thu Nov 15 14:14:47 2018 -0800"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Thu Nov 15 14:14:47 2018 -0800"
      },
      "message": "Merge branch \u0027stable-2.15\u0027\n\n* stable-2.15:\n  Support an extra command for ssh command\n\nChange-Id: If2f68f9c83dae2faf038718d9ec94ba31587e330\n"
    },
    {
      "commit": "6669a16692687aeda81ccc4ab938fca59a5fa14a",
      "tree": "584e2d30e3c5ad4f6f7ee9bdf6248553f6b8c781",
      "parents": [
        "cfed9533017919eba8ae89e27929651c7d37c0a5"
      ],
      "author": {
        "name": "ldube",
        "email": "ldube@audiokinetic.com",
        "time": "Thu Nov 01 15:33:22 2018 -0400"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Thu Nov 15 18:49:52 2018 +0000"
      },
      "message": "Support an extra command for ssh command\n\nThis would be useful to add an extra command like initializing submodules.\n\nChange-Id: If418279493e8556a8176a8b828c5edfc9f88e997\n"
    },
    {
      "commit": "cf58d79bc034e8904aa459d8974df5796a734e1d",
      "tree": "a6405320ef5eac2d8a19ad7112f9f498c566f03d",
      "parents": [
        "39b9d56312d505308f54b810e59ff481b9a380aa"
      ],
      "author": {
        "name": "Edwin Kempin",
        "email": "ekempin@google.com",
        "time": "Wed Jun 06 10:37:50 2018 +0200"
      },
      "committer": {
        "name": "Edwin Kempin",
        "email": "ekempin@google.com",
        "time": "Wed Jun 06 10:40:46 2018 +0200"
      },
      "message": "Migrate to Flogger\n\nChange-Id: I31962c7e273ad10b7e4ed5677a553f5318912f0c\nSigned-off-by: Edwin Kempin \u003cekempin@google.com\u003e\n"
    },
    {
      "commit": "39b9d56312d505308f54b810e59ff481b9a380aa",
      "tree": "30093df3084b2b5b31ebc25ea8cab73fa690a36d",
      "parents": [
        "37219fe3fd59727af1ac7a3b0ee00a6924ff8e00",
        "cfed9533017919eba8ae89e27929651c7d37c0a5"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Thu May 24 10:18:45 2018 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Thu May 24 10:18:45 2018 +0900"
      },
      "message": "Merge branch \u0027stable-2.15\u0027\n\n* stable-2.15:\n  GitDownloadCommand: Use Logger\u0027s built-in string formatting\n\nChange-Id: I2d30fac015a43657fd10c91095896390563b40e5\n"
    },
    {
      "commit": "cfed9533017919eba8ae89e27929651c7d37c0a5",
      "tree": "11bdca7a95ea218602726982f0cc3c9f13bfe04c",
      "parents": [
        "43656ce1658a56834cfe62760eafbb9b17c7ad53",
        "d2f0920fac4838da70e83a03237ab97413960ec6"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Wed May 23 19:12:17 2018 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Wed May 23 19:12:17 2018 +0900"
      },
      "message": "Merge branch \u0027stable-2.14\u0027 into stable-2.15\n\n* stable-2.14:\n  GitDownloadCommand: Use Logger\u0027s built-in string formatting\n\nChange-Id: I4ae4ba2d1de673419682f9965b2838593c3d9515\n"
    },
    {
      "commit": "d2f0920fac4838da70e83a03237ab97413960ec6",
      "tree": "19430cae16d9c09386558a63270ccb2b9df09699",
      "parents": [
        "b88b58b670be36f332285e1818695ac45b5be5b3"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Mon May 21 10:07:49 2018 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Mon May 21 10:07:49 2018 +0900"
      },
      "message": "GitDownloadCommand: Use Logger\u0027s built-in string formatting\n\nChange-Id: Id08fb3af477607c7a0237672d56fe448bdce3b55\n"
    },
    {
      "commit": "37219fe3fd59727af1ac7a3b0ee00a6924ff8e00",
      "tree": "8c5fe91c81171b0e546b852a14acf96f92ea3037",
      "parents": [
        "771695a0903463aa91337323db136b68535e6746"
      ],
      "author": {
        "name": "Edwin Kempin",
        "email": "ekempin@google.com",
        "time": "Fri Jan 19 11:58:43 2018 +0100"
      },
      "committer": {
        "name": "Edwin Kempin",
        "email": "ekempin@google.com",
        "time": "Fri Jan 19 11:58:43 2018 +0100"
      },
      "message": "Adapt to changes in Gerrit API\n\nIdentifiedUser#getByUserName now returns Optional\u003cString\u003e insteadof\na nullable String.\n\nChange-Id: I4230f275aa7c6363607b9463a38da96c4957ef67\nSigned-off-by: Edwin Kempin \u003cekempin@google.com\u003e\n"
    },
    {
      "commit": "771695a0903463aa91337323db136b68535e6746",
      "tree": "9738b777793e246b10ce8f5927eb6c281992ad66",
      "parents": [
        "ddbd12781fd4b3156625608ee608950ab370b9a3"
      ],
      "author": {
        "name": "Edwin Kempin",
        "email": "ekempin@google.com",
        "time": "Thu Jan 18 19:23:29 2018 +0100"
      },
      "committer": {
        "name": "Edwin Kempin",
        "email": "ekempin@google.com",
        "time": "Thu Jan 18 19:47:50 2018 +0100"
      },
      "message": "Adapt to \"Treat empty username as non-existing username\"\n\nIdentifiedUser#getUserName() no longer returns empty user names, hence\nchecking for null is sufficient.\n\nChange-Id: I86256b9c9070e92c033ba328ae295e844d7a32b0\nSigned-off-by: Edwin Kempin \u003cekempin@google.com\u003e\n"
    },
    {
      "commit": "ddbd12781fd4b3156625608ee608950ab370b9a3",
      "tree": "2a632a35cc31b992385db9c7d85b36211c837399",
      "parents": [
        "6ee246245b9200062e753d1c6943d5782cb7fee0",
        "43656ce1658a56834cfe62760eafbb9b17c7ad53"
      ],
      "author": {
        "name": "Jonathan Nieder",
        "email": "jrn@google.com",
        "time": "Wed Oct 25 16:23:18 2017 -0700"
      },
      "committer": {
        "name": "Jonathan Nieder",
        "email": "jrn@google.com",
        "time": "Wed Oct 25 16:23:18 2017 -0700"
      },
      "message": "Merge branch \u0027stable-2.15\u0027\n\n* stable-2.15:\n  CloneWithCommitMsgHook: Stop passing --insecure to curl\n\nChange-Id: I16b388db6a5d36b8a60d9c9ab09d9a793bad24a2\n"
    },
    {
      "commit": "43656ce1658a56834cfe62760eafbb9b17c7ad53",
      "tree": "2a632a35cc31b992385db9c7d85b36211c837399",
      "parents": [
        "6ee246245b9200062e753d1c6943d5782cb7fee0",
        "b88b58b670be36f332285e1818695ac45b5be5b3"
      ],
      "author": {
        "name": "Jonathan Nieder",
        "email": "jrn@google.com",
        "time": "Wed Oct 25 16:20:57 2017 -0700"
      },
      "committer": {
        "name": "Jonathan Nieder",
        "email": "jrn@google.com",
        "time": "Wed Oct 25 16:20:57 2017 -0700"
      },
      "message": "Merge branch \u0027stable-2.14\u0027 into stable-2.15\n\n* stable-2.14:\n  CloneWithCommitMsgHook: Stop passing --insecure to curl\n\nChange-Id: I4ff216985885be55959a79f430ee1894fb5ba1d7\n"
    },
    {
      "commit": "b88b58b670be36f332285e1818695ac45b5be5b3",
      "tree": "852e4201ce2424ff40cc3900f572400c7a63d371",
      "parents": [
        "8357e942dd9da82884a4e1b6e4697479153d0496"
      ],
      "author": {
        "name": "Jonathan Nieder",
        "email": "jrn@google.com",
        "time": "Wed Oct 25 14:19:06 2017 -0700"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Wed Oct 25 23:05:13 2017 +0000"
      },
      "message": "CloneWithCommitMsgHook: Stop passing --insecure to curl\n\nValidating certs is an important feature of HTTPS that we should not\ndisable, especially when downloading code that is going to be trusted.\n\nThis \"curl\" invocation does not take place until after a successful\n\"git clone\", so the -k option would not be useful for dealing with\nmisconfigured https servers.  Any configuration that needs -k would\nalready be broken because of the \"git clone\" that comes before it.\n\nReported-by: Gert van Dijk \u003cgertvdijk@gmail.com\u003e\nBug: Issue 7562\nChange-Id: Ibe14bba5c1ce30a771515ff7985796aa1b8cdadf\n"
    },
    {
      "commit": "6ee246245b9200062e753d1c6943d5782cb7fee0",
      "tree": "3eff9c4c46b0ca8d37145c7e70ff96fbaaefecb8",
      "parents": [
        "8357e942dd9da82884a4e1b6e4697479153d0496"
      ],
      "author": {
        "name": "Sebastian Schuberth",
        "email": "sschuberth@gmail.com",
        "time": "Thu Apr 20 16:37:30 2017 +0200"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Thu Apr 20 15:11:17 2017 +0000"
      },
      "message": "Align on writing \"SHA\" in \"allowTipSHA1InWant\"\n\nEven if git-config key names are case-insensitive, align on writing\n\"allowTipSHA1InWant\" with upper-cased \"SHA\" as that is how Git upstream\n[1] and Gerrit code [2] do it.\n\n[1] https://git-scm.com/docs/git-config#git-config-uploadpackallowTipSHA1InWant\n[2] https://gerrit.googlesource.com/plugins/download-commands/+/refs/heads/master/src/main/java/com/googlesource/gerrit/plugins/download/command/GitDownloadCommand.java#42\n\nChange-Id: Ie28ceec4703e22d696a3601a0e61ad52ca121b29\n"
    },
    {
      "commit": "8357e942dd9da82884a4e1b6e4697479153d0496",
      "tree": "b57567ba814a7264193b7fa58dea37ad7f16b33c",
      "parents": [
        "46a8f7c67d190beabd9cbe6399d6bf85c304f7ee"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Tue Jan 10 20:13:15 2017 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Tue Feb 07 08:54:24 2017 +0900"
      },
      "message": "Format all Java files with google-java-format\n\nChange-Id: Iec0368bf90d394e0a98662e535ac082ad45f3bbb\n"
    },
    {
      "commit": "46a8f7c67d190beabd9cbe6399d6bf85c304f7ee",
      "tree": "59478f06deb9bb2a7ff449208ef5845c9e886e0d",
      "parents": [
        "29b2516f2caef184e0d4441f88344d2a69a938ba"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Jan 24 07:32:53 2017 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Jan 24 07:32:53 2017 +0100"
      },
      "message": "Remove Buck based build\n\nChange-Id: Ie7be70c183d229e7aa965195d334e33160574b82\n"
    },
    {
      "commit": "29b2516f2caef184e0d4441f88344d2a69a938ba",
      "tree": "22bc4cebcab46331ddc1703f64618856ced54f5b",
      "parents": [
        "76cfbcd59988392da2a7c5648bc6975e5c835ee1"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Wed Dec 07 22:02:17 2016 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Wed Dec 07 22:02:17 2016 +0900"
      },
      "message": "Bazel: Reformat BUILD file with buildifier\n\nChange-Id: Iab54927ee82990886e92e80c9860a79292359487\n"
    },
    {
      "commit": "76cfbcd59988392da2a7c5648bc6975e5c835ee1",
      "tree": "54e17d00be407b8dfb8fd861b7d19db6d9466f37",
      "parents": [
        "d632d6471b42a47877664a5266ba509026538a32",
        "5615076bcf114723d1744f7d8944f0df72dbbf2b"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Mon Nov 14 14:25:29 2016 -0800"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Mon Nov 14 14:25:37 2016 -0800"
      },
      "message": "Merge branch \u0027stable-2.13\u0027\n\n* stable-2.13:\n  CloneWithCommitMsgHook: Fix HTTP clone command inconsistency\n\nChange-Id: I97fafb4e6972d5f11e3dddfd69ad0711d0c0bf7f\n"
    },
    {
      "commit": "5615076bcf114723d1744f7d8944f0df72dbbf2b",
      "tree": "18f23950e80b3f3d29eca986148011e842730715",
      "parents": [
        "7b41f3a413b46140b050ae5324cbbcdd467d2b3a",
        "8ad70a0ec142b4b718b97fbbdf97bd8e8dc7fb7a"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Sun Nov 13 11:27:49 2016 -0800"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Sun Nov 13 11:27:55 2016 -0800"
      },
      "message": "Merge branch \u0027stable-2.12\u0027 into stable-2.13\n\n* stable-2.12:\n  CloneWithCommitMsgHook: Fix HTTP clone command inconsistency\n\nChange-Id: I8a86b8cc56834933391afd56fc93d4ece67a4401\n"
    },
    {
      "commit": "8ad70a0ec142b4b718b97fbbdf97bd8e8dc7fb7a",
      "tree": "28c70482bc46120ffb378815cc7397031c32e5c0",
      "parents": [
        "87075138f5b27e9aba91a3af56ddcf1cda3be6b1"
      ],
      "author": {
        "name": "Hector Oswaldo Caballero",
        "email": "hector.caballero@ericsson.com",
        "time": "Thu Nov 10 18:41:04 2016 -0500"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Sun Nov 13 19:12:47 2016 +0000"
      },
      "message": "CloneWithCommitMsgHook: Fix HTTP clone command inconsistency\n\nWhen cloning a project using HTTP schema, the \"/a\" in the URL was added\nonly when choosing to clone without the commit hook. Now the URL is the\nsame in both cases.\n\nChange-Id: I8fc0667f17cea592bd702a0441cba7ca3f762968\n(cherry picked from commit d632d6471b42a47877664a5266ba509026538a32)\n"
    },
    {
      "commit": "d632d6471b42a47877664a5266ba509026538a32",
      "tree": "54e17d00be407b8dfb8fd861b7d19db6d9466f37",
      "parents": [
        "6326db67dfa45b13a0c427643bbfa617c18855d7"
      ],
      "author": {
        "name": "Hector Oswaldo Caballero",
        "email": "hector.caballero@ericsson.com",
        "time": "Thu Nov 10 18:41:04 2016 -0500"
      },
      "committer": {
        "name": "Hector Oswaldo Caballero",
        "email": "hector.caballero@ericsson.com",
        "time": "Fri Nov 11 13:24:48 2016 -0500"
      },
      "message": "CloneWithCommitMsgHook: Fix HTTP clone command inconsistency\n\nWhen cloning a project using HTTP schema, the \"/a\" in the URL was added\nonly when choosing to clone without the commit hook. Now the URL is the\nsame in both cases.\n\nChange-Id: I8fc0667f17cea592bd702a0441cba7ca3f762968\n"
    },
    {
      "commit": "6326db67dfa45b13a0c427643bbfa617c18855d7",
      "tree": "5c1cd150f53666638ce159a55c4bde3fb3b0cddc",
      "parents": [
        "e5f1a9ba057e9b287a7dd2b7e0136eaef183aa6c"
      ],
      "author": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Tue Oct 04 12:50:54 2016 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Tue Oct 04 12:51:46 2016 +0200"
      },
      "message": "Ignore IntelliJ *.iml files\n\nChange-Id: I6c722396f5d995e631af78deb7c02017f10eccfd\n"
    },
    {
      "commit": "e5f1a9ba057e9b287a7dd2b7e0136eaef183aa6c",
      "tree": "643dce16d010848cbe8c6529f39c4b6f12d5977c",
      "parents": [
        "3fb4fb63317b6004761d1fea98a8f4d288d95409"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri Sep 23 12:08:43 2016 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri Sep 23 12:08:43 2016 +0200"
      },
      "message": "Implement Bazel build\n\nChange-Id: I74da3f186e166aae5070b7458ade3f12714d8548\n"
    },
    {
      "commit": "3fb4fb63317b6004761d1fea98a8f4d288d95409",
      "tree": "df95e983d8db91a22eafbe99e64dde51db8741db",
      "parents": [
        "bdc22b1aa9670548828586d8c022c153dc05d400"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@google.com",
        "time": "Tue Aug 23 10:00:34 2016 -0700"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@google.com",
        "time": "Tue Aug 23 10:00:34 2016 -0700"
      },
      "message": "Don\u0027t put \\n inside a markdown link\n\nChange-Id: Ie8ac4e9f1106340037074645a2811c5044d31894\n"
    },
    {
      "commit": "bdc22b1aa9670548828586d8c022c153dc05d400",
      "tree": "23fe8bccd7e67c25189a54c6c73ad403e1c19115",
      "parents": [
        "7b41f3a413b46140b050ae5324cbbcdd467d2b3a"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@google.com",
        "time": "Mon Aug 22 19:08:58 2016 -0700"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@google.com",
        "time": "Mon Aug 22 19:08:58 2016 -0700"
      },
      "message": "Change docs links to actual file extension (.md)\n\nSee https://gerrit-review.googlesource.com/83950 for detailed context.\n\nChange-Id: I425285fc81404d49629bf2f468f45c3fc67dd8f9\n"
    },
    {
      "commit": "7b41f3a413b46140b050ae5324cbbcdd467d2b3a",
      "tree": "7249677495d27a5c9c88f3fd022916016cf50842",
      "parents": [
        "fb05fb988e17b1a2eb7ef476b8613419312afabd"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Wed Jun 01 21:17:06 2016 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Wed Jun 01 21:18:57 2016 +0900"
      },
      "message": "Fix \u0027Statement unnecessarily nested within else clause\u0027 warnings\n\nChange-Id: I53c039d2d8904f6465a5560d9cbb2716df5c48c7\n"
    },
    {
      "commit": "fb05fb988e17b1a2eb7ef476b8613419312afabd",
      "tree": "a19a35e057b323e30bd1ab69f7a34eaa7ae302b2",
      "parents": [
        "1f743e5a877a8ef97b1f3a9e72933c0d87e11d6e"
      ],
      "author": {
        "name": "Edwin Kempin",
        "email": "ekempin@google.com",
        "time": "Thu Apr 07 11:40:11 2016 +0200"
      },
      "committer": {
        "name": "Edwin Kempin",
        "email": "ekempin@google.com",
        "time": "Thu Apr 07 11:44:13 2016 +0200"
      },
      "message": "Don\u0027t show SSH default port in download commands\n\nIf the default SSH port (22) is used there is no need to include it\ninto the download commands since all command-line utilities (e.g. ssh,\nscp) will use this port by default.\n\nBug: Issue 4037\nChange-Id: I023b884df1dd9599aaff927592e3ef1beb766f15\nSigned-off-by: Edwin Kempin \u003cekempin@google.com\u003e\n"
    },
    {
      "commit": "1f743e5a877a8ef97b1f3a9e72933c0d87e11d6e",
      "tree": "229bdd5428b562bab1a3570195c92f908ff6bf4b",
      "parents": [
        "87075138f5b27e9aba91a3af56ddcf1cda3be6b1"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Nov 02 06:35:06 2015 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sun Jan 24 09:06:54 2016 +0100"
      },
      "message": "Adapt commands to new location of AccountGeneralPreferencesInfo\n\nChange-Id: I492d58adbc7d73e15f6d8c3ac51c6f3e238b6392\n"
    },
    {
      "commit": "87075138f5b27e9aba91a3af56ddcf1cda3be6b1",
      "tree": "7b960a1663027059c8bf5830b36d78de47242946",
      "parents": [
        "86eb55733599fee4a996be70bacc842586cd9fae"
      ],
      "author": {
        "name": "Fredrik Medley",
        "email": "fredrik.medley@gmail.com",
        "time": "Tue Nov 17 07:19:21 2015 +0100"
      },
      "committer": {
        "name": "Fredrik Medley",
        "email": "fredrik.medley@gmail.com",
        "time": "Tue Nov 17 12:14:06 2015 +0100"
      },
      "message": "Consider allowReachableSHA1InWant for using object IDs\n\nSince JGit 4.1, included in Gerrit 2.12,\nuploadpack.allowReachableSHA1InWant is used, as well as\nuploadpack.allowTipSHA1InWant, to determine if requests for an exact SHA1\nis allowed.\n\nBug: Issue 175\nChange-Id: I3777b0d5261cf149412e85d3ad69f9352f0585ac\nSigned-off-by: Fredrik Medley \u003cfredrik.medley@gmail.com\u003e\n"
    },
    {
      "commit": "86eb55733599fee4a996be70bacc842586cd9fae",
      "tree": "47955a9706c8436d57e8b32911de6b01c48ae0f5",
      "parents": [
        "6d4e0a45ad4d7faebc692e5f10e418cbfcf858cb"
      ],
      "author": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Wed Sep 09 11:32:31 2015 -0400"
      },
      "committer": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Wed Sep 09 11:32:31 2015 -0400"
      },
      "message": "CloneWithCommitMsgHook: Use gerrit.installCommitMsgHookCommand\n\nChange-Id: Ifeca682030a6f273153afcbd31864db1430471b6\n"
    },
    {
      "commit": "6d4e0a45ad4d7faebc692e5f10e418cbfcf858cb",
      "tree": "f1ac00a6e71a7b110402ca28053ba810fc612ed3",
      "parents": [
        "18b0f6d098a3bacaac022529140be85394549ff1"
      ],
      "author": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Thu Sep 03 16:37:02 2015 -0400"
      },
      "committer": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Thu Sep 03 16:37:02 2015 -0400"
      },
      "message": "Use new CoreDownloadSchemes string constants\n\nChange-Id: Iabcc178eda642e8c6e4f787e25192716320e5601\n"
    },
    {
      "commit": "18b0f6d098a3bacaac022529140be85394549ff1",
      "tree": "11e755164e4f2855e13f67c22ce775797d2c8c95",
      "parents": [
        "99e61fb06a4505a9558c23a56213cb32ceaa9cca"
      ],
      "author": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Thu Sep 03 16:03:24 2015 -0400"
      },
      "committer": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Thu Sep 03 16:03:24 2015 -0400"
      },
      "message": "Remove usage of DEFAULT_* sentinels\n\nDownloadConfig has changed to just populate the respective sets with\nthe proper default values.\n\nChange-Id: I98a742793430cad2bbef84d3e1d269bfffc4de9c\n"
    },
    {
      "commit": "99e61fb06a4505a9558c23a56213cb32ceaa9cca",
      "tree": "93cb5f53df050a80bc35844225778bdb6f989be9",
      "parents": [
        "334f7253855551bea40f0f27b68e3d7aa71fe4af"
      ],
      "author": {
        "name": "Hector Oswaldo Caballero",
        "email": "hector.caballero@ericsson.com",
        "time": "Mon Jul 13 10:39:29 2015 -0400"
      },
      "committer": {
        "name": "Hector Oswaldo Caballero",
        "email": "hector.caballero@ericsson.com",
        "time": "Thu Jul 16 09:22:20 2015 -0400"
      },
      "message": "Clone with commit-msg hook: Use curl if ssh scheme is disabled\n\nIf ssh scheme download was disabled, no command was offered to clone a\nproject with the commit-msg hook.\n\nCreate a curl command to download commit-msg hook when cloning using\nhttp and use the existing scp command only when cloning through ssh.\nUsing scp requires uploading an ssh key to Gerrit. When using http clone\nonly, regular users would not need the ssh key anymore.\n\nChange-Id: Ie7b6ce6f9769042caa541f80cf2cc758d184c044\n"
    },
    {
      "commit": "334f7253855551bea40f0f27b68e3d7aa71fe4af",
      "tree": "7ba2f1b3d3ce8d7293c8ab4139ea73b976ad7de4",
      "parents": [
        "61395a2f263bd9722445908e9e07a42050a132f7"
      ],
      "author": {
        "name": "Edwin Kempin",
        "email": "edwin.kempin@sap.com",
        "time": "Thu Jul 02 08:13:41 2015 +0200"
      },
      "committer": {
        "name": "Edwin Kempin",
        "email": "edwin.kempin@sap.com",
        "time": "Tue Jul 07 07:52:31 2015 +0200"
      },
      "message": "Use commit IDs for download commands when change refs are hidden\n\nGit has a configuration option to hide refs from the initial\nadvertisement (uploadpack.hideRefs). This option can be used to hide\nthe change refs from the client. As consequence fetching changes by\nchange ref is not working anymore. However by setting\nuploadpack.allowTipSha1InWant to true fetching changes by commit ID is\npossible. Adapt the git download commands so that they use the commit\nID instead of the change ref when a project is configured like this.\nIf tools use the download commands that are returned by the Gerrit\nserver, switching on this configuration should be transparent for\nthem.\n\nExample git configuration in a project:\n\n  [uploadpack]\n    hideRefs \u003d refs/changes/\n    hideRefs \u003d refs/cache-automerge/\n    allowTipSha1InWant \u003d true\n\nThe download commands only check for hidden change refs if this is\nexplicitly enabled by setting download.checkForHiddenChangeRefs in the\ngerrit.config to true. This is because for servers that do not have\nany projects with hidden change refs this check is unneeded. The\ndocumentation of this new config option will be added in Gerrit core,\nsince for historic reasons all download configuration parameters are\ndescribed there and it wouldn\u0027t make sense to document a single\nparameter in another place.\n\nBug: Issue 175\nChange-Id: I0f1f68c856f23ffeddd0e833bf45b31549cfd6f2\nSigned-off-by: Edwin Kempin \u003cedwin.kempin@sap.com\u003e\n"
    },
    {
      "commit": "61395a2f263bd9722445908e9e07a42050a132f7",
      "tree": "5b006f16813c028ed2e3416e299100e249d970cc",
      "parents": [
        "de482c42d46bc6254370ccb33fe9700697c05e26"
      ],
      "author": {
        "name": "Edwin Kempin",
        "email": "edwin.kempin@sap.com",
        "time": "Mon Jul 06 13:06:19 2015 +0200"
      },
      "committer": {
        "name": "Edwin Kempin",
        "email": "edwin.kempin@sap.com",
        "time": "Mon Jul 06 13:06:19 2015 +0200"
      },
      "message": "SshScheme: Fix NullPointerException when SSH address is malformed\n\nChange-Id: Ie4a152d66bc6a83b56f888a34edf82085274a1d5\nSigned-off-by: Edwin Kempin \u003cedwin.kempin@sap.com\u003e\n"
    },
    {
      "commit": "de482c42d46bc6254370ccb33fe9700697c05e26",
      "tree": "c413111870300f67e09fe3082a48fb9e3de22d0f",
      "parents": [
        "a080fbb183108872392e839bb783ddc0d8b94383",
        "63e7cf5f24045ede2ee9e5a220e594716b2b6ce4"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Jul 02 21:43:46 2015 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Jul 02 21:43:52 2015 +0900"
      },
      "message": "Merge branch \u0027stable-2.11\u0027\n\n* stable-2.11:\n  Include \u0027/a\u0027 into HttpScheme URLs to trigger authentication\n\nChange-Id: I588d47262d67d6b86f430d4a1afcef41bc3ceb7a\n"
    },
    {
      "commit": "63e7cf5f24045ede2ee9e5a220e594716b2b6ce4",
      "tree": "d3e09606946cfdcd28e7954ffeb3eaa7cb049f96",
      "parents": [
        "baa09c2e265a2b264a5fb4571e7eefda04def0c4"
      ],
      "author": {
        "name": "Edwin Kempin",
        "email": "edwin.kempin@sap.com",
        "time": "Tue Jun 30 13:58:41 2015 +0200"
      },
      "committer": {
        "name": "Edwin Kempin",
        "email": "edwin.kempin@sap.com",
        "time": "Tue Jun 30 14:11:02 2015 +0200"
      },
      "message": "Include \u0027/a\u0027 into HttpScheme URLs to trigger authentication\n\nThere are 2 HTTP download schemes, AnonymousHttpScheme and HttpScheme.\nSince HttpScheme is not anonymous its URLs should include the \u0027/a\u0027\nprefix to trigger user authentication.\n\nNot having the \u0027/a\u0027 prefix may lead to problems when a part of the\nproject is visible to Anonymous Users. In this case authentication is\nnever triggered. This is because for HTTP the first request is always\nanonymous and then the server must say that authentication is\nrequired. Only then the client can send user credrentials. If a\nproject is (partly) visible to Anonymous Users then the first\nanonymous request is always successful and authentication never\nhappens. If the user is not authenticated refs which are not visible\nto Anonymous Users, but for which the user has read access, are not\nvisible.\n\nChange-Id: Ib16b8184f590a9d9896dbf56bd9e3bbf25d57c76\nSigned-off-by: Edwin Kempin \u003cedwin.kempin@sap.com\u003e\n"
    },
    {
      "commit": "a080fbb183108872392e839bb783ddc0d8b94383",
      "tree": "4bdd1e278fe7c1bca069d01818902e222adaf1dd",
      "parents": [
        "741c71342080c33c5644b2ec13dc7287f4b41f4e"
      ],
      "author": {
        "name": "Edwin Kempin",
        "email": "edwin.kempin@sap.com",
        "time": "Wed Jun 24 20:35:47 2015 +0200"
      },
      "committer": {
        "name": "Edwin Kempin",
        "email": "edwin.kempin@sap.com",
        "time": "Thu Jun 25 07:30:16 2015 +0200"
      },
      "message": "Simplify computation of project base name\n\nChange-Id: Ibb1d033ee1756cb24551eff6d2098e2573fc835f\nSigned-off-by: Edwin Kempin \u003cedwin.kempin@sap.com\u003e\n"
    },
    {
      "commit": "741c71342080c33c5644b2ec13dc7287f4b41f4e",
      "tree": "5310c326db7e0115e0088b83223555487cf432cf",
      "parents": [
        "c0f1b84e494c8bab73f4786642dc768ae60468d9"
      ],
      "author": {
        "name": "Edwin Kempin",
        "email": "edwin.kempin@sap.com",
        "time": "Tue Jun 23 09:36:51 2015 +0200"
      },
      "committer": {
        "name": "Edwin Kempin",
        "email": "edwin.kempin@sap.com",
        "time": "Tue Jun 23 09:48:42 2015 +0200"
      },
      "message": "Fix clone with commit-msg hook when project name contains \u0027/\u0027\n\nCloning a project \u0027foo/bar\u0027 with\n\n  git clone ssh://\u003cuser\u003e@\u003chost\u003e:29418/foo/bar\n\nclones the project into a \u0027bar\u0027 folder.\n\nThis means that the commit-msg hook needs to be copied into\n\u0027bar/.git/hooks/\u0027, but so far the command tried to copy it into\n\u0027foo/bar/.git/hooks/\u0027 which failed since the folder didn\u0027t exist.\n\nChange-Id: I2838a810682054dc1a585630480db8110bf71abc\nSigned-off-by: Edwin Kempin \u003cedwin.kempin@sap.com\u003e\n"
    },
    {
      "commit": "c0f1b84e494c8bab73f4786642dc768ae60468d9",
      "tree": "67a8d51218bee5d70174784dda9437dc3e1b4b10",
      "parents": [
        "1cf69212a7489e88d8c73377f0f77f8a5965db75"
      ],
      "author": {
        "name": "Edwin Kempin",
        "email": "edwin.kempin@sap.com",
        "time": "Mon May 11 16:32:04 2015 +0200"
      },
      "committer": {
        "name": "Edwin Kempin",
        "email": "edwin.kempin@sap.com",
        "time": "Tue May 12 15:09:44 2015 +0200"
      },
      "message": "Implement clone commands\n\nAt the moment the clone commands are built on Gerrit client-side. Now\nthis plugin provides these clone commands via the new CloneCommand\nextension point and in a next step the Gerrit client can retrieve the\nclone commands via the /config/server/info REST endpoint so that the\nclient code to build the clone commands can be removed.\n\nChange-Id: I2f284b3995ebe3ab17df331713be3d76c9e08dd6\nSigned-off-by: Edwin Kempin \u003cedwin.kempin@sap.com\u003e\n"
    },
    {
      "commit": "1cf69212a7489e88d8c73377f0f77f8a5965db75",
      "tree": "887b965e14c34c3369abff3b6db1765d79aca88c",
      "parents": [
        "baa09c2e265a2b264a5fb4571e7eefda04def0c4"
      ],
      "author": {
        "name": "Edwin Kempin",
        "email": "edwin.kempin@sap.com",
        "time": "Thu May 07 16:25:16 2015 +0200"
      },
      "committer": {
        "name": "Edwin Kempin",
        "email": "edwin.kempin@sap.com",
        "time": "Mon May 11 08:38:32 2015 +0200"
      },
      "message": "Return null as URL for SshScheme if user has no username\n\nFor SSH a username is required and returning null in this case is\nbetter than returning an invalid URL. A null URL is already handled as\n\u0027scheme not available\u0027.\n\nAt the moment in case of SSH the client makes an extra check whether\nthe user has an username and if not the SSH scheme is skipped.\n\nSigned-off-by: Edwin Kempin \u003cedwin.kempin@sap.com\u003e\nChange-Id: I827af45929ea34a490f52658c67a13cd4591dd27\n"
    },
    {
      "commit": "baa09c2e265a2b264a5fb4571e7eefda04def0c4",
      "tree": "16f70a2ae50cf12c9e070b01c134f7458117d743",
      "parents": [
        "4e978f916d429ab22b0ea28d25ac87755513cc56"
      ],
      "author": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Tue Oct 28 14:46:48 2014 -0700"
      },
      "committer": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Wed Oct 29 14:55:36 2014 -0700"
      },
      "message": "Clean up unused injected parameter\n\nChange-Id: I5637149d27039fefd4faa04177e8e24ff4f6cae7\n"
    },
    {
      "commit": "4e978f916d429ab22b0ea28d25ac87755513cc56",
      "tree": "5f85479eef7ef108161fd2b93ce9293b04e08de2",
      "parents": [
        "4c1ab539a956cb3fddea9c6af1f3c07e4e522cd1"
      ],
      "author": {
        "name": "Hugo Arès",
        "email": "hugo.ares@ericsson.com",
        "time": "Thu Aug 21 08:57:22 2014 -0400"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Fri Aug 22 05:51:52 2014 +0000"
      },
      "message": "Add Gerrit-PluginName in BUCK file\n\nChange-Id: I9994a9be37ea4692df24520a00a4ef7755ba9866\n"
    },
    {
      "commit": "4c1ab539a956cb3fddea9c6af1f3c07e4e522cd1",
      "tree": "fd260ce7fa1eb75095f91c452a09da4824baa12e",
      "parents": [
        "6287d6a8941f68ba8a3a8c27f2a979c02ede489a"
      ],
      "author": {
        "name": "Stefan Lay",
        "email": "stefan.lay@sap.com",
        "time": "Fri Jul 04 15:02:30 2014 +0200"
      },
      "committer": {
        "name": "Stefan Lay",
        "email": "stefan.lay@sap.com",
        "time": "Fri Jul 04 15:27:42 2014 +0200"
      },
      "message": "Add buck resources and eclipse files to .gitignore\n\nChange-Id: I3a50514c01cd8dd96b9ed779585f7d3eae3e2b15\n"
    },
    {
      "commit": "6287d6a8941f68ba8a3a8c27f2a979c02ede489a",
      "tree": "372d17d9c810988a8552a1d95ce354d767c9026d",
      "parents": [
        "7eb3360a89282ceaa404bcade5137cc5eb62945f"
      ],
      "author": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Wed Dec 11 12:04:34 2013 -0800"
      },
      "committer": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Wed Dec 11 12:27:08 2013 -0800"
      },
      "message": "Update to use RefNames constants\n\nGerrit change I76e6ee7e63a4549b51a43698fb50b54a19dabfc6\n\nChange-Id: I1d1383d1c8964add688b7626e4a86df88e7965e4\n"
    },
    {
      "commit": "7eb3360a89282ceaa404bcade5137cc5eb62945f",
      "tree": "dbeb6df0fc5978c439ec73d8a01798aab23de561",
      "parents": [
        "fe2bc6be5ef964a5df247a85f82c0155dc2f8876",
        "eb5e44f2d78a53b24db5ab6e277b27992f10b639"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Dec 11 16:40:19 2013 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Dec 11 16:40:19 2013 +0900"
      },
      "message": "Merge branch \u0027stable-2.8\u0027\n\n* stable-2.8:\n  Always show repo download command if repo download scheme is enabled\n\nConflicts:\n\tsrc/main/java/com/googlesource/gerrit/plugins/download/command/RepoCommand.java\n\nChange-Id: I8115a26a7959cc7766b1ff61f15b211f9a59bd35\n"
    },
    {
      "commit": "eb5e44f2d78a53b24db5ab6e277b27992f10b639",
      "tree": "cdd71699a0f1be14e2c5ec8537eb92cbc76ee2fd",
      "parents": [
        "05975dd6c8ca44de2e01cede16a94df49a3a825f"
      ],
      "author": {
        "name": "Edwin Kempin",
        "email": "edwin.kempin@sap.com",
        "time": "Tue Dec 10 08:21:21 2013 +0100"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Dec 10 08:34:53 2013 +0000"
      },
      "message": "Always show repo download command if repo download scheme is enabled\n\nAt the moment the repo download command is only shown in the repo\ndownload scheme if it is explicitly enabled in the gerrit.config by\nsetting download.command \u003d repo_download. Since the repo download\ncommand is the only command that makes sense for the repo download\nscheme it should always be displayed when the repo download scheme is\nenabled. It doesn\u0027t make sense to be able to enable the repo download\nscheme and to disable the repo download command at the same time.\n\nChange-Id: I79758f81c43b43c52dc6ecd116b7cda66f02374b\nSigned-off-by: Edwin Kempin \u003cedwin.kempin@sap.com\u003e"
    },
    {
      "commit": "fe2bc6be5ef964a5df247a85f82c0155dc2f8876",
      "tree": "75bec2a79df1e292b471b12a9f3ce0970a00710c",
      "parents": [
        "fbec6d1a66daf838a6a795e7ebd470780a398d6f"
      ],
      "author": {
        "name": "Jonathan Nieder",
        "email": "jrn@google.com",
        "time": "Thu Oct 31 12:37:19 2013 -0700"
      },
      "committer": {
        "name": "Jonathan Nieder",
        "email": "jrn@google.com",
        "time": "Thu Oct 31 12:37:25 2013 -0700"
      },
      "message": "Indicate whether each download scheme supports authentication\n\nisAuthSupported() defaults to isAuthRequired(), which is the value\nused here, so no behavior change intended.\n\nExplicitly specifying whether authentication is supported makes it\nclearer which download schemes should be shown for changes that are\nnot visible to anonymous users.  Later we can stop providing a default\nimplementation in DownloadScheme to prevent new download schemes from\ngetting a wrong setting by forgetting to override the default.\n\nChange-Id: If6f11bf906c58c721b0a9c39b9dbee48384b6e32\n"
    }
  ],
  "next": "fbec6d1a66daf838a6a795e7ebd470780a398d6f"
}
