)]}'
{
  "commit": "bbfe0f948f4ac84f671acdf6ab008a6ce1bfb257",
  "tree": "1e95b1b7101a6955c6eee794af2b4be6d626e518",
  "parents": [
    "868533076321adfebe4a73668847f659a8a9fab2"
  ],
  "author": {
    "name": "msta",
    "email": "msta@google.com",
    "time": "Thu Jul 09 12:39:25 2026 +1000"
  },
  "committer": {
    "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Mon Jul 13 04:49:00 2026 -0700"
  },
  "message": "Refactor filesystem utils to clean up the code and avoid OutputFile mutation\n\nThe purpose of this is to allow OutputFile to store a StringAtom, which\nrequires it to be immutable. Doing so would allow us to cheaply copy\nOutputFile objects.\n\n* Rename Get*AsSourceDir to overloaded GetSourceDir.\n* Split GetBuildDirAsOutputFile, GetSubBuildDirAsOutputFile, and GetBuildDirForTargetAsOutputFile into:\n  * GetBuildDir overloads returning std::string.\n  * GetOutputFile overloads that create an outputfile by joining arguments together, avoiding mutation of created OutputFiles\n* Convert Target and Scope parameters in GetSourceDir/GetBuildDir/GetOutputFile from pointers to references to ensure null-safety.\n* Update all call sites across target writers and helper functions to use the new reference-based and overloaded APIs.\n\nBug: 491925153\nChange-Id: I36e7f46e0f0bbef961d9ea444832ee866a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/23922\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e7244e359e78b32a97e30ff555eb80155abcf656",
      "old_mode": 33188,
      "old_path": "src/gn/filesystem_utils.cc",
      "new_id": "b2772eddd6c63a36968d6312e4b4e0a666ff1cfc",
      "new_mode": 33188,
      "new_path": "src/gn/filesystem_utils.cc"
    },
    {
      "type": "modify",
      "old_id": "091a37c6de9d61d9e8bc578c4e3f9e7e81acaf22",
      "old_mode": 33188,
      "old_path": "src/gn/filesystem_utils.h",
      "new_id": "2472c54a0fa76c6185ddb29325bacea1dfa6288f",
      "new_mode": 33188,
      "new_path": "src/gn/filesystem_utils.h"
    },
    {
      "type": "modify",
      "old_id": "7b69a639361e566ffff52d72bfb81609c0711d34",
      "old_mode": 33188,
      "old_path": "src/gn/filesystem_utils_unittest.cc",
      "new_id": "f533bde9b72939c922a554ed8f358aebc2eff1fb",
      "new_mode": 33188,
      "new_path": "src/gn/filesystem_utils_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "04fa9a7dd4a3dea01b09ea5f57d0b5701b7fd17d",
      "old_mode": 33188,
      "old_path": "src/gn/function_get_label_info.cc",
      "new_id": "2d07617861160f467492725b7529d56fa84a35b9",
      "new_mode": 33188,
      "new_path": "src/gn/function_get_label_info.cc"
    },
    {
      "type": "modify",
      "old_id": "00ed043cc1bc434072b5112f56a93fe48a304024",
      "old_mode": 33188,
      "old_path": "src/gn/function_get_path_info.cc",
      "new_id": "a263a8f9983877ff070ec318f183133ca28d03e8",
      "new_mode": 33188,
      "new_path": "src/gn/function_get_path_info.cc"
    },
    {
      "type": "modify",
      "old_id": "c4bbd2be71718794967741bb65f5238c1d7bdeec",
      "old_mode": 33188,
      "old_path": "src/gn/ninja_binary_target_writer.cc",
      "new_id": "8c8d2a093549c469d92add457a2443294e747259",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_binary_target_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "5b9e733d6e125a2222250c7f1afa4641b7e57873",
      "old_mode": 33188,
      "old_path": "src/gn/ninja_create_bundle_target_writer.cc",
      "new_id": "c91d41cae1c97fd93c1ef16c619e53f9ac2c64e3",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_create_bundle_target_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "928851b44709b26f41811a43d6e2c51cbcbf3451",
      "old_mode": 33188,
      "old_path": "src/gn/ninja_target_command_util.cc",
      "new_id": "825d644147186c246c3d39896ba0062d7eb9174b",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_target_command_util.cc"
    },
    {
      "type": "modify",
      "old_id": "4f3e80d0c1d4d1f58d94ae07077e1d191c118e4a",
      "old_mode": 33188,
      "old_path": "src/gn/ninja_target_writer.cc",
      "new_id": "d3d1eb1d078bbb9b3796e9d865b5f54b2053589a",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_target_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "ae03c82b73697c775454635dabbdfa9a5c492b61",
      "old_mode": 33188,
      "old_path": "src/gn/ninja_utils.cc",
      "new_id": "8a4ae8c6568e69578490e5748598092cdf4285fd",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_utils.cc"
    },
    {
      "type": "modify",
      "old_id": "1eacee50cd607946a24a85a37f4d0d91ebbca277",
      "old_mode": 33188,
      "old_path": "src/gn/runtime_deps.cc",
      "new_id": "855365d37e819e50da1b8fe5d450a9ecb248021e",
      "new_mode": 33188,
      "new_path": "src/gn/runtime_deps.cc"
    },
    {
      "type": "modify",
      "old_id": "eb2d4e236cd15c9c66af5a9c044a409ed19f3490",
      "old_mode": 33188,
      "old_path": "src/gn/rust_project_writer.cc",
      "new_id": "17e92d45118a3d01a811d14e350866aba3d1aedc",
      "new_mode": 33188,
      "new_path": "src/gn/rust_project_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "8d706b6c25462685a0a3795e1afed2e5c22feeac",
      "old_mode": 33188,
      "old_path": "src/gn/scope_per_file_provider.cc",
      "new_id": "fa7a1d07861ddb64cbc583791018eb6243925273",
      "new_mode": 33188,
      "new_path": "src/gn/scope_per_file_provider.cc"
    },
    {
      "type": "modify",
      "old_id": "76a5a5c05a349e5c1f7cc44f8135c96cc38395a9",
      "old_mode": 33188,
      "old_path": "src/gn/substitution_writer.cc",
      "new_id": "52d0c8115b12c13ba478bfcd1db1233a5271569c",
      "new_mode": 33188,
      "new_path": "src/gn/substitution_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "0048341c15423d0ab115681b43697b610cd828c8",
      "old_mode": 33188,
      "old_path": "src/gn/target.cc",
      "new_id": "c6cef20927e7c3d40c71644eb51a92b82a9d6add",
      "new_mode": 33188,
      "new_path": "src/gn/target.cc"
    },
    {
      "type": "modify",
      "old_id": "d660be840495139a4308ce6733fb5a09d52b750b",
      "old_mode": 33188,
      "old_path": "src/gn/visual_studio_writer.cc",
      "new_id": "13e54d451c09cc85931630ba5d3eeaf9c6217eb5",
      "new_mode": 33188,
      "new_path": "src/gn/visual_studio_writer.cc"
    }
  ]
}
