)]}'
{
  "commit": "9f9b7e39b519bd4bdbfdc4e13a61bd88821a0fad",
  "tree": "3f49a2cf7ee2f5f2ccaa9d8e2d1595a03eb85922",
  "parents": [
    "ce7eed4960a200ae3109931fbb37e558d900569b"
  ],
  "author": {
    "name": "Rob Findley",
    "email": "rfindley@google.com",
    "time": "Mon Aug 19 19:30:51 2024 +0000"
  },
  "committer": {
    "name": "Gopher Robot",
    "email": "gobot@golang.org",
    "time": "Fri Sep 06 21:56:41 2024 +0000"
  },
  "message": "gopls/internal/settings: add missing deep cloning in Options.Clone\n\nAs noted in a TODO, it appeared that settings.Clone was failing to deep\nclone several map or slice fields. A test revealed that ten (!) fields\nwere not deeply cloned.\n\nFix this by:\n1. Removing pointers and interfaces from settings.Options, by making\n   ClientInfo a non-pointer, and by making LinksInHover a proper enum.\n2. Adding a deepclone package that implements deep cloning using\n   reflection. By avoiding supporting pointers and interfaces, this\n   package doesn\u0027t need to worry about recursive data structures.\n\nChange-Id: Ic89916f7cad51d8e60ed0a8a095758acd1c09a2d\nReviewed-on: https://go-review.googlesource.com/c/tools/+/606816\nLUCI-TryBot-Result: Go LUCI \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Alan Donovan \u003cadonovan@google.com\u003e\nAuto-Submit: Robert Findley \u003crfindley@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d575ae63b6134ce2575f8d4f3825c2ae53cbb43a",
      "old_mode": 33188,
      "old_path": "gopls/internal/cache/snapshot.go",
      "new_id": "9014817bdfff9cba4b765df144b87c575981dd8c",
      "new_mode": 33188,
      "new_path": "gopls/internal/cache/snapshot.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3542476ae098e982410e4f7138af3f65e72fa84a",
      "new_mode": 33188,
      "new_path": "gopls/internal/clonetest/clonetest.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bbb803f2447b59e96fd1f3faacbdaf9a30082c28",
      "new_mode": 33188,
      "new_path": "gopls/internal/clonetest/clonetest_test.go"
    },
    {
      "type": "modify",
      "old_id": "2edb8a99d34f0e1f76059eb09b22c27080b0e96f",
      "old_mode": 33188,
      "old_path": "gopls/internal/golang/hover.go",
      "new_id": "b315b7383d49704506c111eef4e40e4c2ba9a704",
      "new_mode": 33188,
      "new_path": "gopls/internal/golang/hover.go"
    },
    {
      "type": "modify",
      "old_id": "1470210c32e593e8e61ff7b9b69d2a93fae60ed4",
      "old_mode": 33188,
      "old_path": "gopls/internal/server/hover.go",
      "new_id": "80c35c09565071d22b35973cd3a96eb92bb535a7",
      "new_mode": 33188,
      "new_path": "gopls/internal/server/hover.go"
    },
    {
      "type": "modify",
      "old_id": "7b14d2a5d79921fe7017899df2c699ba8a7f33cc",
      "old_mode": 33188,
      "old_path": "gopls/internal/settings/default.go",
      "new_id": "9641613cd5d1f654f5d03bbc2b708609a620d1ec",
      "new_mode": 33188,
      "new_path": "gopls/internal/settings/default.go"
    },
    {
      "type": "modify",
      "old_id": "935eb103980ec036611129206e9335abab6ae10f",
      "old_mode": 33188,
      "old_path": "gopls/internal/settings/settings.go",
      "new_id": "2cd504b25556301c948d685c1a08297c7c258715",
      "new_mode": 33188,
      "new_path": "gopls/internal/settings/settings.go"
    },
    {
      "type": "modify",
      "old_id": "aa566d8f0b456b6358ea6ed833fee1e0ea05fd7a",
      "old_mode": 33188,
      "old_path": "gopls/internal/settings/settings_test.go",
      "new_id": "e2375222639466463c8d67d52b845088c11b51eb",
      "new_mode": 33188,
      "new_path": "gopls/internal/settings/settings_test.go"
    }
  ]
}
