)]}'
{
  "commit": "faa53e17d1c91d97aa2b780ac41190d151aa6b0e",
  "tree": "d580bdf23266f04257761969ac7412c5ff510e3d",
  "parents": [
    "3ff9c4f2a6670edaee3962571ef6241c1bfcc2fc"
  ],
  "author": {
    "name": "Jay Conrod",
    "email": "jayconrod@google.com",
    "time": "Thu Mar 12 18:56:40 2020 -0400"
  },
  "committer": {
    "name": "Jay Conrod",
    "email": "jayconrod@google.com",
    "time": "Tue Mar 31 20:08:48 2020 +0000"
  },
  "message": "cmd/go: add support for GOPROXY fallback on unexpected errors\n\nURLs in GOPROXY may now be separated with commas (,) or pipes (|). If\na request to a proxy fails with any error (including connection errors\nand timeouts) and the proxy URL is followed by a pipe, the go command\nwill try the request with the next proxy in the list. If the proxy is\nfollowed by a comma, the go command will only try the next proxy if\nthe error a 404 or 410 HTTP response.\n\nThe go command will determine how to connect to the checksum database\nusing the same logic. Before accessing the checksum database, the go\ncommand sends a request to \u003cproxyURL\u003e/sumdb/\u003csumdb-name\u003e/supported.\nIf a proxy responds with 404 or 410, or if any other error occurs and\nthe proxy URL in GOPROXY is followed by a pipe, the go command will\ntry the request with the next proxy. If all proxies respond with 404\nor 410 or are configured to fall back on errors, the go command will\nconnect to the checksum database directly.\n\nThis CL does not change the default value or meaning of GOPROXY.\n\nFixes #37367\n\nChange-Id: I35dd218823fe8cb9383e9ac7bbfec2cc8a358748\nReviewed-on: https://go-review.googlesource.com/c/go/+/226460\nRun-TryBot: Jay Conrod \u003cjayconrod@google.com\u003e\nTryBot-Result: Gobot Gobot \u003cgobot@golang.org\u003e\nReviewed-by: Bryan C. Mills \u003cbcmills@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "aa951eefad26ac486fc96170a9045dcfe6a2d05c",
      "old_mode": 33188,
      "old_path": "doc/go1.15.html",
      "new_id": "c59fc4f151a3b51bee08b9c62c2257ae76da8f7b",
      "new_mode": 33188,
      "new_path": "doc/go1.15.html"
    },
    {
      "type": "modify",
      "old_id": "ef054c893886ca4050d1d1472ec8b2adc43341cf",
      "old_mode": 33188,
      "old_path": "src/cmd/go/alldocs.go",
      "new_id": "a20a92d03d9cc78f14adb6a01d2c24df97785c42",
      "new_mode": 33188,
      "new_path": "src/cmd/go/alldocs.go"
    },
    {
      "type": "modify",
      "old_id": "dcea71adb3af7dcbe85a46ec8ebdafa096b189d8",
      "old_mode": 33188,
      "old_path": "src/cmd/go/internal/modfetch/proxy.go",
      "new_id": "67b06cbcd699394e9c38db8eae946afd59246755",
      "new_mode": 33188,
      "new_path": "src/cmd/go/internal/modfetch/proxy.go"
    },
    {
      "type": "modify",
      "old_id": "1ed71dfb85c763017cdba7fd841f2e88d6ab7cf9",
      "old_mode": 33188,
      "old_path": "src/cmd/go/internal/modfetch/sumdb.go",
      "new_id": "ff81ef687e3887b25083ada3fc00a4adbccc1327",
      "new_mode": 33188,
      "new_path": "src/cmd/go/internal/modfetch/sumdb.go"
    },
    {
      "type": "modify",
      "old_id": "bd19bb43aa00b0eea9b52634104e42474b7c309d",
      "old_mode": 33188,
      "old_path": "src/cmd/go/internal/modload/help.go",
      "new_id": "d80206b19482b0a9ecfe72302ee23e63fdf99da4",
      "new_mode": 33188,
      "new_path": "src/cmd/go/internal/modload/help.go"
    },
    {
      "type": "modify",
      "old_id": "a48622814a251c1da5daf1908b032830f4a889f8",
      "old_mode": 33188,
      "old_path": "src/cmd/go/testdata/script/mod_proxy_list.txt",
      "new_id": "849cf2c476406554244339100d1699327f5857aa",
      "new_mode": 33188,
      "new_path": "src/cmd/go/testdata/script/mod_proxy_list.txt"
    },
    {
      "type": "modify",
      "old_id": "28166913fd57189a6f0c16e4d74370ba916a1483",
      "old_mode": 33188,
      "old_path": "src/cmd/go/testdata/script/mod_sumdb_proxy.txt",
      "new_id": "7bbc3f9e196222315c34093703ce54f9fc87afe5",
      "new_mode": 33188,
      "new_path": "src/cmd/go/testdata/script/mod_sumdb_proxy.txt"
    }
  ]
}
