)]}'
{
  "commit": "63dca245994429bd8e9d5128655445e9a58d659f",
  "tree": "14b40063f28acc1d9c8646c51dbdebebec511314",
  "parents": [
    "984ae49b1d037f4aeb9a4d896e6332dd3686cfff"
  ],
  "author": {
    "name": "Russ Cox",
    "email": "rsc@golang.org",
    "time": "Tue Jun 19 12:50:43 2018 -0400"
  },
  "committer": {
    "name": "Russ Cox",
    "email": "rsc@golang.org",
    "time": "Fri Jun 22 16:45:26 2018 +0000"
  },
  "message": "cmd/go/internal/modfetch: push codehost.Repo locking down one level\n\nThe modfetch.Repo needs to be safe for use by multiple goroutines,\nbut the codehost.Repo (a source code repository) was not,\nso we added locking around the codehost.Repo methods.\nBut we might reasonably have multiple modfetch.Repos (modules)\ndrawing from a single codehost.Repo, especially if we cache\ncodehost.Repo construction. So push the locking further down.\n\nAfter this CL, it would still be nice to add locking in package\ncodehost on a per-directory basis, so that codehost.Run calls\non a given directory are, or at least can be, serialized,\neven when they are being invoked from different processes.\nTo do that we need to work out the right file locking on each\nsystem, which we\u0027ll put off for now. (TODO added.)\n\n(Git is already doing file locking to make access from multiple\nprocesses safe at the level of individual commands.)\n\nChange-Id: I9ce4ecf8f8b49cabea50b8663e3cee60ff95e7c9\nReviewed-on: https://go-review.googlesource.com/119775\nReviewed-by: Bryan C. Mills \u003cbcmills@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "218bb1a798ead21891852cbf0a05a24e42f820e6",
      "old_mode": 33188,
      "old_path": "vendor/cmd/go/internal/modfetch/codehost/codehost.go",
      "new_id": "177be3a0af15669f7b804dd9fa1d5e922f37fa76",
      "new_mode": 33188,
      "new_path": "vendor/cmd/go/internal/modfetch/codehost/codehost.go"
    },
    {
      "type": "modify",
      "old_id": "703b3507f6c4f1541fbd127d3f0f5a09717a6b2e",
      "old_mode": 33188,
      "old_path": "vendor/cmd/go/internal/modfetch/coderepo.go",
      "new_id": "ab2a052a09e997fba10ae4941a343be5900de61a",
      "new_mode": 33188,
      "new_path": "vendor/cmd/go/internal/modfetch/coderepo.go"
    },
    {
      "type": "modify",
      "old_id": "8a653a87ba1beabfc0ca4d06251cb89d2e7146e9",
      "old_mode": 33188,
      "old_path": "vendor/cmd/go/internal/modfetch/gitrepo/fetch.go",
      "new_id": "e0781896f7ed7ae3cc029a8926a33b88bebd65fa",
      "new_mode": 33188,
      "new_path": "vendor/cmd/go/internal/modfetch/gitrepo/fetch.go"
    }
  ]
}
