)]}'
{
  "commit": "5787e994aa4cb6cdb09c2c72ae6f1c6a7f1cf91a",
  "tree": "37dfcee1428f6da29d5b9e527e981a7fc9b2b2d3",
  "parents": [
    "03d10f1657b4ddace618c34ab61b6357d1ae9c9a"
  ],
  "author": {
    "name": "David \u0027Digit\u0027 Turner",
    "email": "digit@google.com",
    "time": "Tue Feb 20 19:53:46 2024 +0100"
  },
  "committer": {
    "name": "GN LUCI",
    "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Mon Feb 26 11:53:17 2024 +0000"
  },
  "message": "Add NinjaOutputsWriter class\n\nImplement a new class that can be used to generate a JSON\nfile containing an object mapping GN label strings to\nlist of corresponding Ninja output paths (including stamp\nfiles).\n\nThis will be used to implement a new `gn gen` option.\nThe output can be used by GN clients to quickly convert\nbetween GN labels and Ninja targets.\n\nThis is done through the following changes:\n\n- NinjaTargetWriter gets new methods to write output\n  files to the build plan, and record the\n  corresponding OutputFile values (without Ninja\n  escaping) separately if needed.\n\n- All NinjaTargetWriter sub-classes are updated to\n  call WriteOutput() or WriteOutputs() when adding\n  Ninja output paths to the generated .ninja_files, instead\n  of calling path_outputs_.WriteFile() directly.\n\nChange-Id: Id6b1cc667e7bec56d37ededb75475fbc480eccaf\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/16761\nReviewed-by: Dirk Pranke \u003cdpranke@google.com\u003e\nCommit-Queue: David Turner \u003cdigit@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "41d1571b245d08557c0683eed812a3f2e1373c7d",
      "old_mode": 33261,
      "old_path": "build/gen.py",
      "new_id": "e7037bb77933317730d37815a4ba0b98e3a351f6",
      "new_mode": 33261,
      "new_path": "build/gen.py"
    },
    {
      "type": "modify",
      "old_id": "d6d3aa8eb13edda457bb9d0d1468cab9a285b432",
      "old_mode": 33188,
      "old_path": "src/gn/ninja_action_target_writer.cc",
      "new_id": "06da24477602b842f7c9e5a4ee3cf1ec837961fb",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_action_target_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "3cfa584affadc94b7b19b4f64714f8f9506ce5fc",
      "old_mode": 33188,
      "old_path": "src/gn/ninja_binary_target_writer.cc",
      "new_id": "62e01eb41ffeb058004815feb9424147123fcea3",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_binary_target_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "f97c222a5370baa352ca89dcbab022ccfd60c9b4",
      "old_mode": 33188,
      "old_path": "src/gn/ninja_c_binary_target_writer.cc",
      "new_id": "eada97d2625363e5d435ffdf6aa26fad42b2dbd8",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_c_binary_target_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "157b612b33ea13473c2d387e6f413f9e8af64cae",
      "old_mode": 33188,
      "old_path": "src/gn/ninja_copy_target_writer.cc",
      "new_id": "eca56d0d6f86ccbcd8838fe2ec5df5c673fd9b50",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_copy_target_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "23936abc41eaa10cebeeebe05ad505f86b97b8e3",
      "old_mode": 33188,
      "old_path": "src/gn/ninja_create_bundle_target_writer.cc",
      "new_id": "efa950e75f26fb4e417b36fa2b9149fc8e47d2eb",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_create_bundle_target_writer.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4f9309fe27ab9c4598201bccac46dcf073b0b110",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_outputs_writer.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c81a3ed1367cb43ce6469056cc25754a0c9ca050",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_outputs_writer.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "52354c62992d88482c414baffe6b909f18e6a897",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_outputs_writer_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "6ecbaa7e75a36c94b35f79042feacb242d99c503",
      "old_mode": 33188,
      "old_path": "src/gn/ninja_target_writer.cc",
      "new_id": "b8b156f0d10e728867259e7d07a8d2a4cd2bf725",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_target_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "74378dae600f67dffc59a48764491e334e3e6948",
      "old_mode": 33188,
      "old_path": "src/gn/ninja_target_writer.h",
      "new_id": "9655c721e00571e44f9a6918b1f203eadb4a7c45",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_target_writer.h"
    }
  ]
}
