)]}'
{
  "commit": "8adea60ca6d3e1268992b7809f6b605679f008f8",
  "tree": "c174635902534a71c9161a8c696fa65cb578d585",
  "parents": [
    "84cea64f80dd4614cce6609eafadf296a392b7cc"
  ],
  "author": {
    "name": "Dmitri Shuralyov",
    "email": "dmitshur@golang.org",
    "time": "Thu Nov 20 16:35:32 2025 -0500"
  },
  "committer": {
    "name": "Gopher Robot",
    "email": "gobot@golang.org",
    "time": "Fri Nov 21 15:24:17 2025 -0800"
  },
  "message": "cmd/relui, internal/task: switch to Gerrit API in UpdateProxyTestRepo\n\nThe original implementation of the UpdateProxyTestRepo action relied on\ngit to directly push the test repository to Gerrit. This included force\npushing of modified tags.\n\nGit force pushing is a potentially destructive operation, and by now\nits individual invocations need to be annotated with an explanatory\nrationale. We could do that, but it would further cement this action\nas needlessly different from how relui updates other repositories,\none that may need more maintenance over time to keep functional.\n\nInstead, rewrite the action to create Gerrit CLs via the Gerrit API\nto modify the repository file content. This is more consistent with how\nwe apply changes in other Gerrit hosts, and makes it possible to narrow\ndown destructive operations from a general-purpose git force push to\nonly tag deletion.\n\nChange-Id: I3df72f65806822cb5face5221e175a024fd9f7af\nReviewed-on: https://go-review.googlesource.com/c/build/+/722620\nAuto-Submit: Dmitri Shuralyov \u003cdmitshur@golang.org\u003e\nReviewed-by: Dmitri Shuralyov \u003cdmitshur@google.com\u003e\nLUCI-TryBot-Result: Go LUCI \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Robert Findley \u003crfindley@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8f0fa6d2edc47952b5759867c3dd985b6090111c",
      "old_mode": 33188,
      "old_path": "cmd/relui/main.go",
      "new_id": "996006df6edf85cf9da3b4abd3eb23e29deb590d",
      "new_mode": 33188,
      "new_path": "cmd/relui/main.go"
    },
    {
      "type": "modify",
      "old_id": "8710f3a703bffbf1a78a76244eea2b97f284bb60",
      "old_mode": 33188,
      "old_path": "gerrit/gerrit.go",
      "new_id": "4668fe16549c6fecdb7ca6cb56f947aef048880d",
      "new_mode": 33188,
      "new_path": "gerrit/gerrit.go"
    },
    {
      "type": "modify",
      "old_id": "bfe6ce73c6a4ee836c7af2d50517a1692b2f5ecc",
      "old_mode": 33188,
      "old_path": "internal/relui/workflows.go",
      "new_id": "590a8b72ae8384df465a7e5be47294e33bcaa771",
      "new_mode": 33188,
      "new_path": "internal/relui/workflows.go"
    },
    {
      "type": "modify",
      "old_id": "549a9ab6ced664066256a2d500c606b0f42a6618",
      "old_mode": 33188,
      "old_path": "internal/task/fakes.go",
      "new_id": "adbd87b0fb3a1e21522655abe9538a4735f940dc",
      "new_mode": 33188,
      "new_path": "internal/task/fakes.go"
    },
    {
      "type": "modify",
      "old_id": "c7181d9724d658b4f6591b23f80b0dabe29bdf90",
      "old_mode": 33188,
      "old_path": "internal/task/gerrit.go",
      "new_id": "7fe867f8702f7a219e4029b2847d1fe8e178aa8b",
      "new_mode": 33188,
      "new_path": "internal/task/gerrit.go"
    },
    {
      "type": "modify",
      "old_id": "3bf2c4e1854578edff4b611c62c2be1723bba4b0",
      "old_mode": 33188,
      "old_path": "internal/task/updateproxytestrepo.go",
      "new_id": "38e594c523d313014d2f3390a00d94de0b37a54d",
      "new_mode": 33188,
      "new_path": "internal/task/updateproxytestrepo.go"
    },
    {
      "type": "modify",
      "old_id": "5bb44e12dd3e5811b7ac05a9296fee6c3996e193",
      "old_mode": 33188,
      "old_path": "internal/task/updateproxytestrepo_test.go",
      "new_id": "42d8b3b13cd1c65b1f840cd5b824553342e5b9bd",
      "new_mode": 33188,
      "new_path": "internal/task/updateproxytestrepo_test.go"
    }
  ]
}
