)]}'
{
  "commit": "2e3ba82395563cae2b82db1a55df4757a6aeabc2",
  "tree": "2d1448c7f9a4503894f1fbfeb1c8a777fba2a0cf",
  "parents": [
    "ed7fee04cb30b96ed40ef188acfad5417349e399"
  ],
  "author": {
    "name": "Henrique Ferreiro",
    "email": "hferreiro@igalia.com",
    "time": "Tue Nov 03 13:04:44 2026 +0100"
  },
  "committer": {
    "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Tue Nov 03 10:07:02 2026 -0800"
  },
  "message": "Fix how the regeneration command writes gn\u0027s own paths\n\nGetSelfInvocationCommandLine() escapes the switches it copies from the\ncurrent command line, but not the gn executable, --root or --dotfile,\nwhich it writes itself. A space or \"$\" in any of those paths broke\nregeneration, since Ninja expanded \"$\" and the shell split on spaces.\nEscape them like every other switch.\n\nAlso only write the gn executable and --dotfile relative to the build\ndirectory if they\u0027re inside the source root or the build directory,\nsince those are the places where relative paths keep working even if\nthey\u0027re moved.\n\nFor that, FilePath::IsParent() has to match roots written with different\nseparators on Windows: the source root always uses \u0027/\u0027, but the paths\ncompared with it may not, and \"C:/src\" wasn\u0027t considered a parent of\n\"C:\\src\\list.txt\". Port the root comparison that\nhttps://crrev.com/c/8674581 added to AppendRelativePath(), which treats\nroots made of the same number of separators as equal.\n\nThis is a precursor to https://gn-review.googlesource.com/c/gn/+/18220,\nwhich handles --runtime-deps-list-file the same way.\n\nChange-Id: I107aabe2d8a9f1b67c62792bb3ff2ae92973d5a8\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/28400\nReviewed-by: Sylvain Defresne \u003csdefresne@chromium.org\u003e\nReviewed-by: Andrew Grieve \u003cagrieve@google.com\u003e\nCommit-Queue: Andrew Grieve \u003cagrieve@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "be045b003bcde6db283634a6f7d8c4e901d3f47f",
      "old_mode": 33188,
      "old_path": "src/base/files/file_path.cc",
      "new_id": "a3029bac6ae036e30196b3f607515a94e553be7a",
      "new_mode": 33188,
      "new_path": "src/base/files/file_path.cc"
    },
    {
      "type": "modify",
      "old_id": "ecc32a41c0cb85018ab2a1b92ad91a82f8221d96",
      "old_mode": 33188,
      "old_path": "src/gn/ninja_build_writer.cc",
      "new_id": "375cfc80f8acabde0c89d0988fdcaed8be306fe0",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_build_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "423aa90186d6e6e9fc716b9ed17354a2ca7ea3b6",
      "old_mode": 33188,
      "old_path": "src/gn/ninja_build_writer_unittest.cc",
      "new_id": "c7f1885b19a8d9d3baa03c38a054935be2e68cde",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_build_writer_unittest.cc"
    }
  ]
}
