)]}'
{
  "commit": "42ace47bb426ca9705175d866bb9bdf168d5535f",
  "tree": "362e17c7f745d4ba477238de375487ce9e513fd3",
  "parents": [
    "ab5eb1783d8d5c1a40e56393b1b52c4b25692cf1"
  ],
  "author": {
    "name": "Matt Stark",
    "email": "msta@google.com",
    "time": "Mon Apr 13 11:10:13 2026 +1000"
  },
  "committer": {
    "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Fri Apr 17 00:46:55 2026 -0700"
  },
  "message": "Add function `expand_directory` to gn.\n\nThis function expands a directory to a list of files.\nThis will allow us to do a variety of things, such as:\n* Removing our `generate_libcxx_headers` script\n* Ensuring that our whole sysroot is in the inputs to a rule.\n\nThis is required because the contents of a sysroot are not able to be\nstored in the chrome source code because chromeos sysroots can be paths\npointing to the chromeos checkout rather than the chrome checkout.\n\nIt also allows us to significantly improve the quality of our third\nparty libraries, for which we would, after this change, no longer have\nto keep the source file list in sync, but instead simply use those third\nparty libraries as the source of truth.\n\nBug: b:491242305\nChange-Id: Ib52107b2f877021d3e59c54c9a554fac6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/21860\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e40627c81919ced7bc9729f40f4e3f2cd227f18b",
      "old_mode": 33261,
      "old_path": "build/gen.py",
      "new_id": "2a7e7318d7ee59c25134ddaa2c72d3e47821bfb7",
      "new_mode": 33261,
      "new_path": "build/gen.py"
    },
    {
      "type": "modify",
      "old_id": "053296069684d315e455e61a839237844a05fed8",
      "old_mode": 33188,
      "old_path": "docs/reference.md",
      "new_id": "27d5af0f51507421eae25ec96a9afd496412d8c3",
      "new_mode": 33188,
      "new_path": "docs/reference.md"
    },
    {
      "type": "modify",
      "old_id": "6c482845608dbab9722fc92d383c9131e0a7d229",
      "old_mode": 33188,
      "old_path": "src/gn/build_settings.h",
      "new_id": "0d4decb5be2197446b96cacdae7b3761362a0335",
      "new_mode": 33188,
      "new_path": "src/gn/build_settings.h"
    },
    {
      "type": "modify",
      "old_id": "01cdb66136984ee5f27598d696184ec7df2537a0",
      "old_mode": 33188,
      "old_path": "src/gn/function_exec_script.cc",
      "new_id": "966dbfcf26bc013d5853d98bf38ac8e08f2ece59",
      "new_mode": 33188,
      "new_path": "src/gn/function_exec_script.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4005098a2ef683a4960e382bcff25cae7a43d839",
      "new_mode": 33188,
      "new_path": "src/gn/function_expand_directory.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ecd467c612c9ecc56cfd0bd624cd629e3f29e45a",
      "new_mode": 33188,
      "new_path": "src/gn/function_expand_directory_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "830fcee7e78b60402ef107a1dbeb62d7c249dd2a",
      "old_mode": 33188,
      "old_path": "src/gn/functions.cc",
      "new_id": "d7099650eb2abb4420f3f799b00df0b51a1badc2",
      "new_mode": 33188,
      "new_path": "src/gn/functions.cc"
    },
    {
      "type": "modify",
      "old_id": "787e6ed2df0c185ef7223f5dd9eefddd03817c5f",
      "old_mode": 33188,
      "old_path": "src/gn/functions.h",
      "new_id": "bf97b9e9603958f2129582ace974f1e58ed21dbd",
      "new_mode": 33188,
      "new_path": "src/gn/functions.h"
    },
    {
      "type": "modify",
      "old_id": "b29e2ff0abdb5bf6585a426f06a2b35c612432d5",
      "old_mode": 33188,
      "old_path": "src/gn/setup.cc",
      "new_id": "b83a2ea806acdcbf8c421a56093fae26db33bd7b",
      "new_mode": 33188,
      "new_path": "src/gn/setup.cc"
    },
    {
      "type": "modify",
      "old_id": "3a9198b3a0f89ca2fd750ce6264321e30ba5af59",
      "old_mode": 33188,
      "old_path": "src/gn/source_file.cc",
      "new_id": "ecc2d1e9160fbbb16dbce291c5d0f6eef52c6144",
      "new_mode": 33188,
      "new_path": "src/gn/source_file.cc"
    },
    {
      "type": "modify",
      "old_id": "f682f0d4c7c1de28146cb7985876045cfd01f45d",
      "old_mode": 33188,
      "old_path": "src/gn/source_file.h",
      "new_id": "f63c5dc6b19e713c16cb3f63ce5a3fdedfd1cd1f",
      "new_mode": 33188,
      "new_path": "src/gn/source_file.h"
    }
  ]
}
