)]}'
{
  "commit": "0a6cdd775a6812169f1b0e5c6bfb27d35d50cbef",
  "tree": "370a24762b5ea19e5a43961c2483548d8adb097d",
  "parents": [
    "184f864c4167d0e2923eb90fe611923812255ec4"
  ],
  "author": {
    "name": "Russ Cox",
    "email": "rsc@golang.org",
    "time": "Fri Jun 15 10:40:48 2018 -0400"
  },
  "committer": {
    "name": "Russ Cox",
    "email": "rsc@golang.org",
    "time": "Fri Jun 15 20:32:29 2018 +0000"
  },
  "message": "cmd/go: parallelize module load operations\n\nLoading information about modules not yet cached\non the local system is dominated by network I/O time.\nLoad the information in parallel to overlap this I/O.\n\nAs a test case, I am using a real (not synthetic) but unpublished\nrepo with 90 transitive dependencies. In that repo,\nI\u0027ve measured the time it takes for\n\n\trm -rf $GOPATH/src/v \u0026\u0026 vgo mod -vendor\n\nBefore this CL, that operation averages about 220 seconds.\n\nAdding caching of already-looked-up information\nin modfetch/repo.go drops the average time to about 170 seconds.\n\nChanging the MVS requirement scans to run in parallel\ndrops the average time to about 65 seconds.\nThis CL includes Bryan\u0027s comments for mvs.Reqs\nfrom CL 116235, extended to document the new parallel\naccess requirements.\n\nThis CL also adds the build -x flag to \u0027vgo mod\u0027 so that it\u0027s\npossible to see all the git commands being executed.\n\nFixes golang/go#24316.\n\nChange-Id: Ia8228e850c6c60d8fa80d2fb3b6773c70e86137b\nReviewed-on: https://go-review.googlesource.com/119055\nRun-TryBot: Russ Cox \u003crsc@golang.org\u003e\nReviewed-by: Bryan C. Mills \u003cbcmills@google.com\u003e\nTryBot-Result: Gobot Gobot \u003cgobot@golang.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b97cd8c28ca5660709b27a3bed3fdadd13058278",
      "old_mode": 33188,
      "old_path": "vendor/cmd/go/internal/modcmd/mod.go",
      "new_id": "47faceec9190be41a48a6fa87ff5771c7c6ca446",
      "new_mode": 33188,
      "new_path": "vendor/cmd/go/internal/modcmd/mod.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d140d476d1af4b3ce55df0a2af2f5f3a9f17a9b6",
      "new_mode": 33188,
      "new_path": "vendor/cmd/go/internal/modfetch/cache.go"
    },
    {
      "type": "modify",
      "old_id": "b089981af2a54ad5a729e93b16cf45644caa67e9",
      "old_mode": 33188,
      "old_path": "vendor/cmd/go/internal/modfetch/repo.go",
      "new_id": "83b2262e39c9d59ddfa0bbd099710058f6eb6ba9",
      "new_mode": 33188,
      "new_path": "vendor/cmd/go/internal/modfetch/repo.go"
    },
    {
      "type": "modify",
      "old_id": "47670ff5a65c6d3a4fc8a48749e12a49f2f48937",
      "old_mode": 33188,
      "old_path": "vendor/cmd/go/internal/mvs/mvs.go",
      "new_id": "9e7816db4bcd00c66f41a4b298782d586a8e2dee",
      "new_mode": 33188,
      "new_path": "vendor/cmd/go/internal/mvs/mvs.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "31c29b107fbb140e5dd6b9c254a59ca12089e1b2",
      "new_mode": 33188,
      "new_path": "vendor/cmd/go/internal/par/work.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "71c0395d3b37f3f2fdeeb8ff608cd7166cc685f9",
      "new_mode": 33188,
      "new_path": "vendor/cmd/go/internal/par/work_test.go"
    },
    {
      "type": "modify",
      "old_id": "25cb0dd09ac533ec6bc3caba358431819ca04891",
      "old_mode": 33188,
      "old_path": "vendor/cmd/go/internal/vgo/load.go",
      "new_id": "0f69bf0dc61aa20545ba44dd7fd3868f7444d368",
      "new_mode": 33188,
      "new_path": "vendor/cmd/go/internal/vgo/load.go"
    }
  ]
}
