)]}'
{
  "commit": "0db00fc0fb75adf816104951b415769a087144c1",
  "tree": "1719c3d790e37d1e08eb15385a6673ffdaf86412",
  "parents": [
    "d5594ca84e69ea33223e41b49ac2736b27feae33"
  ],
  "author": {
    "name": "msta",
    "email": "msta@google.com",
    "time": "Mon Aug 10 14:13:54 2026 +1000"
  },
  "committer": {
    "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu Aug 13 19:22:34 2026 -0700"
  },
  "message": "Implement `gn edit` command, and implement a simple subcommand \"set\"\n\n`gn edit` is a command heavily inspired by buildozer\n(https://github.com/bazelbuild/buildtools/blob/main/buildozer/README.md).\nIt allows programattic editing of BUILD.gn files.\n\nIt is a soft requirement for the rollout of strict deps, and has three\nprimary use cases:\n* Make AI able to edit build files more effectively\n* Make large-scale rollouts easier to perform.\n* Put the infrastructure in place for `gn check --fix` / `gn suggest --apply`\n\nBug: 528225104\nChange-Id: Ic0a83aec04a4036aa6ff7fdcf593bc716a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25281\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "141505849905345d386b5c453c7f5c1fc120101e",
      "old_mode": 33261,
      "old_path": "build/gen.py",
      "new_id": "5cb1015657cd54d5bf9f00411af4ad293cc83795",
      "new_mode": 33261,
      "new_path": "build/gen.py"
    },
    {
      "type": "modify",
      "old_id": "b726a197f1a41951e927dac4b7f2891214025b5c",
      "old_mode": 33188,
      "old_path": "docs/reference.md",
      "new_id": "8053e94fab8e0d281e0eee94e76a31f6701a3a21",
      "new_mode": 33188,
      "new_path": "docs/reference.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "01a346d269f56e601c8881de663bc3be24691441",
      "new_mode": 33188,
      "new_path": "src/gn/build_file_editor.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a003816b2b6f352f45b8b8608888b87e5d2f2f06",
      "new_mode": 33188,
      "new_path": "src/gn/build_file_editor.h"
    },
    {
      "type": "modify",
      "old_id": "b49c4803f4d844d6bc760ef49bd66f7fe1cf2cbf",
      "old_mode": 33188,
      "old_path": "src/gn/command_format.cc",
      "new_id": "e00b271a9b2dcdf9764466ae27258a4e27e4eb11",
      "new_mode": 33188,
      "new_path": "src/gn/command_format.cc"
    },
    {
      "type": "modify",
      "old_id": "7854d9e33a3e01df2fc451c3fadedb775a707c46",
      "old_mode": 33188,
      "old_path": "src/gn/command_format.h",
      "new_id": "59dbd0eb9398a0fe00d4657e9f727b3fc1dc9e84",
      "new_mode": 33188,
      "new_path": "src/gn/command_format.h"
    },
    {
      "type": "modify",
      "old_id": "582ba01dcd838db830a3bc213a77c3e623cd2474",
      "old_mode": 33188,
      "old_path": "src/gn/commands.cc",
      "new_id": "1c2c16b6c8f16bbf0266632feb2f70a384733bee",
      "new_mode": 33188,
      "new_path": "src/gn/commands.cc"
    },
    {
      "type": "modify",
      "old_id": "812d342d3e25558867442c50c1152425e09e587f",
      "old_mode": 33188,
      "old_path": "src/gn/commands.h",
      "new_id": "30a607f248888be8fcc192b8229513ad81511d67",
      "new_mode": 33188,
      "new_path": "src/gn/commands.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b8095fff02adae3e34eefdc353d64a23390cd8e7",
      "new_mode": 33188,
      "new_path": "src/gn/edit_command.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c3414d3f2f1e05407ae82df300c9ae9ea2815d50",
      "new_mode": 33188,
      "new_path": "src/gn/edit_command.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1961e560f7049d5a164a64b37b91e199f7339938",
      "new_mode": 33188,
      "new_path": "src/gn/edit_command_unittest.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "243cff5139413f7872c62782703664e12311507c",
      "new_mode": 33188,
      "new_path": "src/gn/edit_subcommands.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "720be9d49f07375fbb2ca88382f324f34e352c76",
      "new_mode": 33188,
      "new_path": "src/gn/edit_subcommands.h"
    },
    {
      "type": "modify",
      "old_id": "9a21829568bd513407fd34169b151657f55d8ffb",
      "old_mode": 33188,
      "old_path": "src/gn/label_pattern.cc",
      "new_id": "6c14c3efbcefc081c1216a212b7558e4e2d43576",
      "new_mode": 33188,
      "new_path": "src/gn/label_pattern.cc"
    },
    {
      "type": "modify",
      "old_id": "7444ae29378f33eb92b52ee7c35af55bce01d639",
      "old_mode": 33188,
      "old_path": "src/gn/label_pattern.h",
      "new_id": "4ef275b94d59833af53727a4585006b18d70202c",
      "new_mode": 33188,
      "new_path": "src/gn/label_pattern.h"
    },
    {
      "type": "modify",
      "old_id": "471d6cb6506602200c392b75eb37830a866de450",
      "old_mode": 33188,
      "old_path": "src/gn/parse_tree.h",
      "new_id": "08b5dbc4eb8670d7d2e5b98b816e521f09f6b1b3",
      "new_mode": 33188,
      "new_path": "src/gn/parse_tree.h"
    },
    {
      "type": "modify",
      "old_id": "95e4c19dc8b2d116d69ea628e8c0b2c0eb95b319",
      "old_mode": 33188,
      "old_path": "src/gn/setup.cc",
      "new_id": "c0f4c39141b2ab46243741e435a9699a81681735",
      "new_mode": 33188,
      "new_path": "src/gn/setup.cc"
    },
    {
      "type": "modify",
      "old_id": "40048913ea110b64dfe4dcd9c3d478923a1ad289",
      "old_mode": 33188,
      "old_path": "src/gn/setup.h",
      "new_id": "7f13c4427ea69a4265c18f4fd2e4fe08c28d87b4",
      "new_mode": 33188,
      "new_path": "src/gn/setup.h"
    },
    {
      "type": "modify",
      "old_id": "db184eed275cefc1eac007fd822ed173ba3d8893",
      "old_mode": 33188,
      "old_path": "src/gn/value.cc",
      "new_id": "2b7a6738c35dd3a5913a99c5a5b708172fbf793a",
      "new_mode": 33188,
      "new_path": "src/gn/value.cc"
    },
    {
      "type": "modify",
      "old_id": "dab3a8e391ca01edf9391126acd9c3fe8122673a",
      "old_mode": 33188,
      "old_path": "src/gn/value.h",
      "new_id": "e1903c9da6dac34b2962a8552bb34d2c6ad69cff",
      "new_mode": 33188,
      "new_path": "src/gn/value.h"
    },
    {
      "type": "modify",
      "old_id": "cc2261d473ec7cb307c3b951f26a052ff3384107",
      "old_mode": 33188,
      "old_path": "src/util/test/test.h",
      "new_id": "ebb2b1c4f063a1344ec7cc382eee6097d305027b",
      "new_mode": 33188,
      "new_path": "src/util/test/test.h"
    }
  ]
}
