)]}'
{
  "log": [
    {
      "commit": "ab72187a74a08507b2275b3c1d37cd1d47fe73d9",
      "tree": "dabae6300c02b0dfc3fd8f3eef541ccd36ba7bc4",
      "parents": [
        "9f70450adae45ced1647d1646c9bebf898502da9"
      ],
      "author": {
        "name": "Vamsy Krishna Nooney",
        "email": "vamsykn@google.com",
        "time": "Thu Oct 17 10:46:54 2024 -0700"
      },
      "committer": {
        "name": "Vamsy Krishna Nooney",
        "email": "vamsykn@google.com",
        "time": "Thu Oct 17 10:47:43 2024 -0700"
      },
      "message": "Revert \"Fix shebang\"\n\nThis change is causing gBMC builds to fail. Reverting it for now.\n\nThis reverts commit 9f70450adae45ced1647d1646c9bebf898502da9.\n\nChange-Id: Id145012dc7ad5d0ec57b5d37ec7d9ab090fd2199\n"
    },
    {
      "commit": "9f70450adae45ced1647d1646c9bebf898502da9",
      "tree": "30494623b4409432aa2a365d2134660e5308d686",
      "parents": [
        "6c05256b54c45b529c4863c70452b7c072a9eeab"
      ],
      "author": {
        "name": "Lai Jiang",
        "email": "jianglai@google.com",
        "time": "Mon Oct 14 10:31:05 2024 -0400"
      },
      "committer": {
        "name": "Lai Jiang",
        "email": "jianglai@google.com",
        "time": "Mon Oct 14 11:23:44 2024 -0400"
      },
      "message": "Fix shebang\n\n/usr/bin/python is no longer guaranteed to exist. For example, it\ndoesn\u0027t on gLinux, or in the latest gcr.io/cloud-builders/git image.\n\nChange-Id: Ie13401114e8d58f7a18eb11a670c1b05d40b698d\n"
    },
    {
      "commit": "6c05256b54c45b529c4863c70452b7c072a9eeab",
      "tree": "dabae6300c02b0dfc3fd8f3eef541ccd36ba7bc4",
      "parents": [
        "147e9b8acf2d449dc55894362db0192d00a68cb7"
      ],
      "author": {
        "name": "Joe Bandenburg",
        "email": "joeban@google.com",
        "time": "Thu Jun 30 11:21:53 2022 -0400"
      },
      "committer": {
        "name": "Joe Bandenburg",
        "email": "joeban@google.com",
        "time": "Thu Jun 30 11:27:41 2022 -0400"
      },
      "message": "Fix scripts for Python 3.10\n\nThere was a change in Python 3.10 that causes these scripts to\ncrash with the following error:\n\nFile \"gcompute-tools/./git-cookie-authdaemon\", line 148, in update_cookie\n    cj.save()\n  File \"/usr/lib/python3.10/http/cookiejar.py\", line 2120, in save\n    if cookie.has_nonstandard_attr(HTTPONLY_ATTR):\n  File \"/usr/lib/python3.10/http/cookiejar.py\", line 805, in has_nonstandard_attr\n    return name in self._rest\nTypeError: argument of type \u0027NoneType\u0027 is not iterable\n\nLooking at the source for Cookie in both Python 2.7[1] and\nPython 3.10[2], it looks like it expects the rest parameter to be\na dictionary. I\u0027ve tested this change in Python 3.10 and it fixes the\nissue.\n\n[1] https://github.com/python/cpython/blob/v2.7.18/Lib/cookielib.py#L794\n[2] https://github.com/python/cpython/blob/v3.10.5/Lib/http/cookiejar.py#L809\n\nChange-Id: I2a917022d5a096696b48231dd95d4b9131734b54\n"
    },
    {
      "commit": "147e9b8acf2d449dc55894362db0192d00a68cb7",
      "tree": "358fa7fd7266d85fac2efa5e7cc74a1b66f6d1bf",
      "parents": [
        "441bfc9f4c4251f9cd7c41e262c72d58a6f8961d"
      ],
      "author": {
        "name": "Han Wang",
        "email": "nesthanwang@google.com",
        "time": "Fri Aug 06 13:07:28 2021 -0700"
      },
      "committer": {
        "name": "Han Wang",
        "email": "nesthanwang@google.com",
        "time": "Fri Aug 06 20:38:20 2021 +0000"
      },
      "message": "Updating README.md with Python3 instructions for Windows\n\nChange-Id: Ic6e449425d0de489583b582e8e13aabc5b875192\n"
    },
    {
      "commit": "441bfc9f4c4251f9cd7c41e262c72d58a6f8961d",
      "tree": "25bed6450393493003516b6bfa46a41ad5c5264f",
      "parents": [
        "831819ae3f185b47db84b055f575507112d49252"
      ],
      "author": {
        "name": "William (Weiliang) Yan",
        "email": "wyan@google.com",
        "time": "Mon Jul 12 10:52:05 2021 -0700"
      },
      "committer": {
        "name": "William (Weiliang) Yan",
        "email": "wyan@google.com",
        "time": "Mon Jul 12 13:13:53 2021 -0700"
      },
      "message": "Add support to Windows Server 2019.\n\nAdditionally, make some clarifications.\n\nChange-Id: Ie9e104b70208d45fd525a1821095211edb797373\n"
    },
    {
      "commit": "831819ae3f185b47db84b055f575507112d49252",
      "tree": "0122289eedb54d4e3564bda565f696cc592a696c",
      "parents": [
        "3f2274f2f418c8b52342cabb936c69e753008c10"
      ],
      "author": {
        "name": "Ozy Selcuk",
        "email": "ozy@google.com",
        "time": "Mon Oct 05 20:01:02 2020 +0200"
      },
      "committer": {
        "name": "Ozy Selcuk",
        "email": "ozy@google.com",
        "time": "Mon Oct 05 20:01:02 2020 +0200"
      },
      "message": "Respect HOMEDRIVE environment variable if set\n\nHOMEPATH variable only contains the part of the path after the drive\nletter, so using it directly will result in wrong behavior if the\nscript is run from a different drive. Joining this path to the HOMEDRIVE\nvariable yields the correct path.\n\nUse os.environ.get instead of directly indexing into the dictionary to\nmake sure we maintain backwards compatibility with systems where\nHOMEPATH may have been supplied manually, without HOMEDRIVE.\n\nChange-Id: Ifc94af807433ba628cee4ac6ac9cd9e7abebe80b\n"
    },
    {
      "commit": "3f2274f2f418c8b52342cabb936c69e753008c10",
      "tree": "4917f2dca6a391324b15a838d8f63b4f839d71f1",
      "parents": [
        "328d3e09cac2a6ad78569f29c49acb5002c10780"
      ],
      "author": {
        "name": "Gunjan Baid",
        "email": "gunjanbaid@google.com",
        "time": "Fri Mar 06 15:26:03 2020 -0800"
      },
      "committer": {
        "name": "Gunjan Baid",
        "email": "gunjanbaid@google.com",
        "time": "Fri Mar 06 16:04:04 2020 -0800"
      },
      "message": "Add Python 3 compatibility.\n\nChange-Id: Id09cce1a0db2109ba5f37df03aa544b06bf41dda\n"
    },
    {
      "commit": "328d3e09cac2a6ad78569f29c49acb5002c10780",
      "tree": "d4736ddb318989983cdacb5707ce50a8500b4500",
      "parents": [
        "dc5521faa9d5234d86b85b84e3df391e882da27d"
      ],
      "author": {
        "name": "Gunjan Baid",
        "email": "gunjanbaid@google.com",
        "time": "Tue Jan 21 11:39:33 2020 -0800"
      },
      "committer": {
        "name": "Gunjan Baid",
        "email": "gunjanbaid@google.com",
        "time": "Tue Jan 21 11:40:06 2020 -0800"
      },
      "message": "Specify octal literals with leading \u00270o\u0027 for Python 3 compatibility.\n\nLeading \u00270\u0027 is only supported by Python 2. \u00270o\u0027 will work for Python 2\nand 3.\n\nChange-Id: Ib861d6d7885d1e0152de539a0cd982e849ea82d1\n"
    },
    {
      "commit": "dc5521faa9d5234d86b85b84e3df391e882da27d",
      "tree": "f787333979a7bf21f0f39bc3f4ef946e4016e5e0",
      "parents": [
        "0462876c17dafd80f6b56aa9df94a91607991d76"
      ],
      "author": {
        "name": "Gunjan Baid",
        "email": "gunjanbaid@google.com",
        "time": "Mon Dec 16 12:01:27 2019 -0800"
      },
      "committer": {
        "name": "Gunjan Baid",
        "email": "gunjanbaid@google.com",
        "time": "Mon Dec 16 17:18:54 2019 -0800"
      },
      "message": "Update print statements to be Python 3 compatible.\n\nChange-Id: Ifcb890c22cb42a7cc2d641742d7093f7be2c59a9\n"
    },
    {
      "commit": "0462876c17dafd80f6b56aa9df94a91607991d76",
      "tree": "1b47070c8884850440cb72d35f9aed01e7cc5e73",
      "parents": [
        "d85c2a45ae2fa2c49bb1373a924af56ff2a9f6ec"
      ],
      "author": {
        "name": "William (Weiliang) Yan",
        "email": "wyan@google.com",
        "time": "Thu Aug 01 17:00:29 2019 -0700"
      },
      "committer": {
        "name": "William (Weiliang) Yan",
        "email": "wyan@google.com",
        "time": "Thu Aug 01 17:02:55 2019 -0700"
      },
      "message": "Add instruction to start git-cookie-authdaemon at boot for Linux.\n\nAdd git-cookie-authaemon as systemd service.\n\nChange-Id: Ie83af3c1f45f7a8c3a5a3c8b22154a4d5c6e6c38\n"
    },
    {
      "commit": "d85c2a45ae2fa2c49bb1373a924af56ff2a9f6ec",
      "tree": "b646aad192e6b6fb4bad24b861acef9449ab0ed9",
      "parents": [
        "08f6e01c8947a68450ca544bd63fddccc2e3c6ee"
      ],
      "author": {
        "name": "Han Wang",
        "email": "nesthanwang@nestlabs.com",
        "time": "Wed Aug 22 13:54:43 2018 -0700"
      },
      "committer": {
        "name": "Han Wang",
        "email": "nesthanwang@nestlabs.com",
        "time": "Wed Aug 22 16:09:29 2018 -0700"
      },
      "message": "Include cloud-platform scope as a supported scope\n\nThe cloud-platform scope grants access to r/w data for all GCP services,\nso it should work.\n\nChange-Id: I9757bb77aa375d8a59add1bd6c52160fcbb14651\n"
    },
    {
      "commit": "08f6e01c8947a68450ca544bd63fddccc2e3c6ee",
      "tree": "be5e706d8079e8e090cb59f940a9770b3b117ea6",
      "parents": [
        "2ffbce93326c9512900d0f08e51221a1073ab89c"
      ],
      "author": {
        "name": "William (Weiliang) Yan",
        "email": "wyan@google.com",
        "time": "Thu Nov 09 00:20:47 2017 -0800"
      },
      "committer": {
        "name": "William (Weiliang) Yan",
        "email": "wyan@google.com",
        "time": "Mon Nov 13 15:07:16 2017 -0800"
      },
      "message": "Support GCE Windows.\n\n1. Allow updating cookie files.\n2. Error out with warning when --nofork is missing. os.fork() is not supported on Windows.\n3. Error out with warning when env var HOMEPATH is not set.\n\nChange-Id: I155774afed8910d5cd38780a47e321fac6651953\n"
    },
    {
      "commit": "2ffbce93326c9512900d0f08e51221a1073ab89c",
      "tree": "bb7a9b6469c52e2bc4c04925c5121a8cd3c971dc",
      "parents": [
        "20d696109fee8b4b6018f3b686eab386047dd9bb"
      ],
      "author": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Wed Nov 08 19:50:54 2017 +0100"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Wed Nov 08 19:52:44 2017 +0100"
      },
      "message": "Add copyright headers\n\nChange-Id: I59b9627ce3b55f44f0b042e52bda0be20596af13\n"
    },
    {
      "commit": "20d696109fee8b4b6018f3b686eab386047dd9bb",
      "tree": "2ce830c2204d4732ef935779251bcbc37c48db04",
      "parents": [
        "58a58caa8fc2dac2c5feb8d8b9fe29bcba93157f"
      ],
      "author": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Thu Dec 08 10:52:34 2016 -0800"
      },
      "committer": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Thu Dec 08 11:20:16 2016 -0800"
      },
      "message": "Move to metadata server v1 API\n\nSupport any scope that may be accepted by a service.\n\nChange-Id: Ifef92158ff425b1e478b6fb73eae60878d782f63\n"
    },
    {
      "commit": "58a58caa8fc2dac2c5feb8d8b9fe29bcba93157f",
      "tree": "2bfd7cae44e3d84c52dc1549551fb172155775d6",
      "parents": [
        "7278586ba501b092fcf244c493c1f25048aa1167"
      ],
      "author": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Thu Dec 08 09:24:24 2016 -0800"
      },
      "committer": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Thu Dec 08 09:28:46 2016 -0800"
      },
      "message": "Simple README.md for the git-cookie-authdaemon\n"
    },
    {
      "commit": "7278586ba501b092fcf244c493c1f25048aa1167",
      "tree": "1281e850ab046fd2798693341826fb4bc82a18e2",
      "parents": [
        "4e2fa665a0d8a20f12f57fecba56e3eccc7a199a"
      ],
      "author": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Thu Dec 08 09:21:02 2016 -0800"
      },
      "committer": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Thu Dec 08 09:21:02 2016 -0800"
      },
      "message": "Also configure source.developers.google.com\n\nSupport both googlesource.com and Google Cloud Source Repositories\nas they now both accept tokens from the gerritcodereview scope.\n"
    },
    {
      "commit": "4e2fa665a0d8a20f12f57fecba56e3eccc7a199a",
      "tree": "ddd405bbdb21a8e5f76ad74e10e39e897b28ceed",
      "parents": [
        "ca277e120bc2f6652f666552d4bc5c5008639515"
      ],
      "author": {
        "name": "Razvan Musaloiu-E",
        "email": "razvanm@google.com",
        "time": "Mon Jul 28 20:24:12 2014 -0700"
      },
      "committer": {
        "name": "Razvan Musaloiu-E",
        "email": "razvanm@google.com",
        "time": "Mon Jul 28 20:24:12 2014 -0700"
      },
      "message": "Add a --nofork flag\n\nWhen running under some sort of supervisor (daemontools, runit, supervisord,\netc) the programs needs to run in foregroud. This flag allows this\nfunctionality.\n"
    },
    {
      "commit": "ca277e120bc2f6652f666552d4bc5c5008639515",
      "tree": "2ef05ad8e8de25a34a4de22ad373b6ac0d0d319f",
      "parents": [
        "12912b7d65300941382f18c1db6730d93b6b5559"
      ],
      "author": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Thu Mar 07 10:17:51 2013 +0000"
      },
      "committer": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Thu Mar 07 10:17:51 2013 +0000"
      },
      "message": "Fix bad use of context manager in git-cookie-authdaemon.\n\nurlopen objects aren\u0027t context managers, using them in a with statement\nrequires wrapping with contextlib.closing.\n"
    },
    {
      "commit": "12912b7d65300941382f18c1db6730d93b6b5559",
      "tree": "1808696695ecdf41a912e83583083d727326541d",
      "parents": [
        "5ae7d553444785f0a33c2824e88275d798d8e0ca"
      ],
      "author": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Wed Mar 06 11:51:59 2013 +0000"
      },
      "committer": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Wed Mar 06 11:51:59 2013 +0000"
      },
      "message": "Adjust git-cookie-authdaemon refresh to match server.\n\nThe metadata server currently doesn\u0027t return a new cookie until 30\nseconds before the previous one expires (previously this was five\nminutes). Adjust REFRESH to match.\n"
    },
    {
      "commit": "5ae7d553444785f0a33c2824e88275d798d8e0ca",
      "tree": "93920c3aa2f579aed06b303beab2bb38c3142282",
      "parents": [
        "ac60cf518418ba6c9ab0278dccf3be175f80f439"
      ],
      "author": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Wed Mar 06 11:48:27 2013 +0000"
      },
      "committer": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Wed Mar 06 11:48:27 2013 +0000"
      },
      "message": "Make git-cookie-authdaemon more robust.\n\nOnce the daemon has backgrounded itself, retry fetching the cookie if\nthere\u0027s an error, rather than just allowing the daemon to crash. Also,\nthrottle the minimum interval between new attempts to fetch the cookie,\nas otherwise if the server returns a cookie that expires in less than\nREFRESH seconds, the script will keep trying to refresh the cookie as\nfast as it possibly can until it gets a new one, which triggers DoS\nprevention limits.\n\nFailures on the initial cookie fetch are not retried, as the daemon is\nstill in the foreground at that point and hopefully either a human or a\nlogging process is watching it.\n"
    },
    {
      "commit": "ac60cf518418ba6c9ab0278dccf3be175f80f439",
      "tree": "eb87a30f834c620b9fe0a77c8479ae90243dbcb3",
      "parents": [
        "1c1b4ffe7705e678ec5bb7f3e438b4c0a7879702"
      ],
      "author": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Tue Dec 18 17:14:46 2012 -0800"
      },
      "committer": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Tue Dec 18 17:14:46 2012 -0800"
      },
      "message": "git-googlesource-login: Helper to stay authenticated\n\nA small Python program accepting a password for *.googlesource.com\nand configuring Git to always present this as an HTTP cookie, similar\nto the way authentication happens on Google Compute Engine.\n"
    },
    {
      "commit": "1c1b4ffe7705e678ec5bb7f3e438b4c0a7879702",
      "tree": "8cf9f880845ab439ab4b6b87ae3757132afda8f7",
      "parents": [
        "4b89bf529b3288a35f0df433444708a948d2e93b"
      ],
      "author": {
        "name": "Colby Ranger",
        "email": "cranger@google.com",
        "time": "Tue Dec 11 08:17:17 2012 -0800"
      },
      "committer": {
        "name": "Colby Ranger",
        "email": "cranger@google.com",
        "time": "Tue Dec 11 08:17:17 2012 -0800"
      },
      "message": "Remove an extraneous tab.\n\nThe tab was breaking the execution of the program.\n"
    },
    {
      "commit": "4b89bf529b3288a35f0df433444708a948d2e93b",
      "tree": "3ae5fed2d8618f86506b49808e2fd48708f982cd",
      "parents": [
        "44a4ca1b16b32a6b6d9b499840f5c01ebe72ef36"
      ],
      "author": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Thu Dec 06 14:50:22 2012 -0800"
      },
      "committer": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Thu Dec 06 14:50:59 2012 -0800"
      },
      "message": "Delete cookie file at exit of daemon\n\nRemoving the cookie file when the daemon is asked to gracefully\nterminate ensures future Git commands will fail immediately with\nauthentication errors, rather than waiting until the last valid\ncookie expired.\n"
    },
    {
      "commit": "44a4ca1b16b32a6b6d9b499840f5c01ebe72ef36",
      "tree": "e1992bc85dd9a6bda6a7a111d774a1635d2710aa",
      "parents": [
        "b238baca8cb2ce8832bce001cbc9839e82f27ae9"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Dec 05 21:58:17 2012 -0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Dec 05 21:58:17 2012 -0800"
      },
      "message": "git-cookie-authdaemon: Keep a Netscape cookie file current\n\nThe daemon maintains ~/.git-credential-cache/cookie with a valid OAuth\naccess token in the \"o\" cookie for .googlesource.com. Before it forks\ninto the background http.cookiefile is set to this path and an initial\ncookie is written out. This allows callers to wait for the process to\nbackground before starting their first Git operation.\n\nOnce running the daemon refreshes the cookie file 10 minutes before\nthe access token is scheduled to expire. Refreshes are performed using\nan atomic rename, ensuring Git clients see either the old cookie or\nthe new cookie, but never a truncated cookie file.\n"
    },
    {
      "commit": "b238baca8cb2ce8832bce001cbc9839e82f27ae9",
      "tree": "0c6b0cd0705e60732d3397ef605b0ebac623ea7d",
      "parents": [
        "b8436fcf02c124e8ceebb78d961077290b89bc5b"
      ],
      "author": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Wed Dec 05 15:14:32 2012 -0800"
      },
      "committer": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Wed Dec 05 15:14:32 2012 -0800"
      },
      "message": "always-auth: Configure url.insteadof rewrite for /a/\n\nThe /a/ directory prefix can be used on googlesource.com to force\nuser authentication, even if Git didn\u0027t really want to authenticate\nwith the server. Accept a host name and enter the url.insteadof rule\ninto ~/.gitconfig for the caller.\n"
    },
    {
      "commit": "b8436fcf02c124e8ceebb78d961077290b89bc5b",
      "tree": "9bc6685cbe15425e93b61cacb3dcd7b683705bdb",
      "parents": [],
      "author": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Wed Dec 05 14:37:19 2012 -0800"
      },
      "committer": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Wed Dec 05 14:59:31 2012 -0800"
      },
      "message": "Initial version of git-credential-serviceaccount\n\nThis is a tiny credential helper for Git 1.7.9 or later using\nGoogle Compute Engine\u0027s native service account system to acquire\nOAuth access tokens for sites hosted at googlesource.com.\n"
    }
  ]
}
