)]}'
{
  "commit": "9a3e09dfe439fdd4ade5d50b26284471c8301df5",
  "tree": "eaa8f4c1d16c1bd63f0ac15df0149786268916ab",
  "parents": [
    "4da53faeac4a501eddf19b66ea362cc755d05a60"
  ],
  "author": {
    "name": "brettw@chromium.org",
    "email": "brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98",
    "time": "Fri Nov 08 23:25:04 2013 +0000"
  },
  "committer": {
    "name": "brettw@chromium.org",
    "email": "brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98",
    "time": "Fri Nov 08 23:25:04 2013 +0000"
  },
  "message": "Refactor the GN threading model to reduce locking and simplify execution.\n\nOld design: item_tree manages dependency resolution, target_manager creates and hooks up the target dependencies, and the toolchain manager does all kinds of crazy ordering and loading stuff on every thread. There is lots of locking every time the dependency tree is modified.\n\nThis patch completely deletes the toolchain manager, item tree, item node, and target manager.\n\nThe new design is that the build files are executed on background threads, but then they come back to the main thread which assembles the dependency tree and schedules other file loads. This eliminates almost all locking and a lot of complexity.\n\nThe Loader now manages loading the different build files in the correct context, and managing dependencies (loading the build config first, for example). The Builder manages the dependency tree and requests that the Loader load files that it encounters references to.\n\nThis simpler design reduces non-test code by ~350 lines. In the current gn build, lock acquisitions go down from 1808 to 116 and it saves about 20ms wall clock time (8% faster). This is a bit deceiving, though, because most of the time is spent on pkg-config which is constant. It speeds up running individual build files by 1000-1500%.\n\nThe work of putting the tree together that used to take up this time inside locks is now transferred to the main thread, which looks like it is *sometimes* a bottleneck. This should be easier to optimize in the future, though.\n\nOther tweaks:\n - I fixed cycle finding\n - Directories look prettier on Windows using the \"desc\" command\n - Tracing output now includes the main thread and marks it as such\n - I updated the base BUILD.gn file for the more recent tree.\n\nR\u003dscottmg@chromium.org\n\nReview URL: https://codereview.chromium.org/56433003\n\nCr-Mirrored-From: https://chromium.googlesource.com/chromium/src\nCr-Mirrored-Commit: 26542b05b057b860dda4fe73a8ab179b86bccadd\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c5cc1cb5971918392d8799dc2f7067620aaa1286",
      "old_mode": 33188,
      "old_path": "tools/gn/BUILD.gn",
      "new_id": "43ca2d1ee7d37ff687a162035fd8f798ecb054b2",
      "new_mode": 33188,
      "new_path": "tools/gn/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "af603166ae8e9f5a3a649509b6c1c98dd50e3187",
      "old_mode": 33188,
      "old_path": "tools/gn/bin/linux/gn.sha1",
      "new_id": "92e7e20322237473c6a1ed05f678e487ef0b376d",
      "new_mode": 33188,
      "new_path": "tools/gn/bin/linux/gn.sha1"
    },
    {
      "type": "modify",
      "old_id": "492ffbcdf82d4070924882f62ad9b624c9c5aef3",
      "old_mode": 33188,
      "old_path": "tools/gn/bin/win/gn.exe.sha1",
      "new_id": "19440ce8f407b97930760c6e2c27f809c3285dca",
      "new_mode": 33188,
      "new_path": "tools/gn/bin/win/gn.exe.sha1"
    },
    {
      "type": "modify",
      "old_id": "b8d2d6e6ba801f0e5f1ee397e44ceaaac219a385",
      "old_mode": 33188,
      "old_path": "tools/gn/binary_target_generator.cc",
      "new_id": "3aec119e12ec0b73623986ad2f7c76bfa28bfcbe",
      "new_mode": 33188,
      "new_path": "tools/gn/binary_target_generator.cc"
    },
    {
      "type": "modify",
      "old_id": "f0b42eac1d5bc93eae257b1d53c1a580d23c2221",
      "old_mode": 33188,
      "old_path": "tools/gn/binary_target_generator.h",
      "new_id": "d4db096d62e880ca068285445bc406dbde5a0b87",
      "new_mode": 33188,
      "new_path": "tools/gn/binary_target_generator.h"
    },
    {
      "type": "modify",
      "old_id": "0a75569b1dbbf7211e61d6eef63ef30ac4533e50",
      "old_mode": 33188,
      "old_path": "tools/gn/build_settings.cc",
      "new_id": "7d1bcf0b2c9624169d358a193235507d9ed5531e",
      "new_mode": 33188,
      "new_path": "tools/gn/build_settings.cc"
    },
    {
      "type": "modify",
      "old_id": "fc175dfe795167204e97b678c664a4b9df8bb93a",
      "old_mode": 33188,
      "old_path": "tools/gn/build_settings.h",
      "new_id": "2e93296bc237375c39ded91cadfeee4e689e2c5e",
      "new_mode": 33188,
      "new_path": "tools/gn/build_settings.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "07a308b0b90a9b5f9bda8e2641a025fa2feaa663",
      "new_mode": 33188,
      "new_path": "tools/gn/builder.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "994c8e181b396641788b39841245999f26ed660d",
      "new_mode": 33188,
      "new_path": "tools/gn/builder.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "066b1ea8030cb2cfdd3a207897936d4b44a1073e",
      "new_mode": 33188,
      "new_path": "tools/gn/builder_record.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6e7e9bb305ed1ba535bab18ad39f98d809d483e3",
      "new_mode": 33188,
      "new_path": "tools/gn/builder_record.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "538d5f5a8d4ae854145905c9122acb1036b77f09",
      "new_mode": 33188,
      "new_path": "tools/gn/builder_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "415666ca53367e4271e835497d12b4efb64193f8",
      "old_mode": 33188,
      "old_path": "tools/gn/command_desc.cc",
      "new_id": "f680da38ed5abd02c7a8e4c129c9d3b93248ebd1",
      "new_mode": 33188,
      "new_path": "tools/gn/command_desc.cc"
    },
    {
      "type": "modify",
      "old_id": "9f6d38f01afa62c3608ca75ba787de75a18ea29d",
      "old_mode": 33188,
      "old_path": "tools/gn/command_gen.cc",
      "new_id": "cde677a1443d01191210272d667f171a1f529177",
      "new_mode": 33188,
      "new_path": "tools/gn/command_gen.cc"
    },
    {
      "type": "modify",
      "old_id": "0aff1a92ee241cb4b30ca765ce05510ef6b4c753",
      "old_mode": 33188,
      "old_path": "tools/gn/command_gyp.cc",
      "new_id": "06e5bde410a6208168525c7c2be3e6c995968a8b",
      "new_mode": 33188,
      "new_path": "tools/gn/command_gyp.cc"
    },
    {
      "type": "modify",
      "old_id": "d49f5368c23e67782153034b872ec5cb2a4dc367",
      "old_mode": 33188,
      "old_path": "tools/gn/command_refs.cc",
      "new_id": "fde617c2d9239bdf45047425cdf2832ca1669fa2",
      "new_mode": 33188,
      "new_path": "tools/gn/command_refs.cc"
    },
    {
      "type": "modify",
      "old_id": "e600872c431c56751a9723cbd7beba07e64f28fc",
      "old_mode": 33188,
      "old_path": "tools/gn/commands.cc",
      "new_id": "d40beab011ae1ef3efeff1f35750c56c60eaba10",
      "new_mode": 33188,
      "new_path": "tools/gn/commands.cc"
    },
    {
      "type": "modify",
      "old_id": "5b89e2beb020d82ca179e6b866b5a49ae529960b",
      "old_mode": 33188,
      "old_path": "tools/gn/config.cc",
      "new_id": "dce951f65b33384fec9403cb65176ef6354662d8",
      "new_mode": 33188,
      "new_path": "tools/gn/config.cc"
    },
    {
      "type": "modify",
      "old_id": "e5a1df6d7eeee7bdbb1a9fdab95eb6943c74ce60",
      "old_mode": 33188,
      "old_path": "tools/gn/config.h",
      "new_id": "f08b85915302f6f22cc8848c5eaaa6e96bbb2934",
      "new_mode": 33188,
      "new_path": "tools/gn/config.h"
    },
    {
      "type": "modify",
      "old_id": "6f7fb22afcc1a088707dbad388f9d7959f69bdda",
      "old_mode": 33188,
      "old_path": "tools/gn/config_values_generator.cc",
      "new_id": "f66ddfd688199e6c35e01abfd1cb23f84720d69e",
      "new_mode": 33188,
      "new_path": "tools/gn/config_values_generator.cc"
    },
    {
      "type": "modify",
      "old_id": "d58018e35d59e9db0294fb4aa34b891ff72a139b",
      "old_mode": 33188,
      "old_path": "tools/gn/config_values_generator.h",
      "new_id": "eb8a2e6b1668b7216aa3bec0a7e32b7b6e8e0511",
      "new_mode": 33188,
      "new_path": "tools/gn/config_values_generator.h"
    },
    {
      "type": "modify",
      "old_id": "f02d4a7f750e40c49626747282acb7c1db12273e",
      "old_mode": 33188,
      "old_path": "tools/gn/copy_target_generator.cc",
      "new_id": "b1b907642880c9697ec260e77ca8c2d32df6bfdd",
      "new_mode": 33188,
      "new_path": "tools/gn/copy_target_generator.cc"
    },
    {
      "type": "modify",
      "old_id": "b6f7e14b2b13443b5900c268bf49ef438f1bc89e",
      "old_mode": 33188,
      "old_path": "tools/gn/copy_target_generator.h",
      "new_id": "2361bff87d35ff66e77dee26e624bb5eff43417d",
      "new_mode": 33188,
      "new_path": "tools/gn/copy_target_generator.h"
    },
    {
      "type": "modify",
      "old_id": "c2b20a5710b01babf87315fd36ea0ad58b372911",
      "old_mode": 33188,
      "old_path": "tools/gn/function_set_default_toolchain.cc",
      "new_id": "78f313fc68474b5e4ea486621b2955db27b5ad18",
      "new_mode": 33188,
      "new_path": "tools/gn/function_set_default_toolchain.cc"
    },
    {
      "type": "modify",
      "old_id": "dde0306fb14cdc91922c1e534c010e5c47b7400b",
      "old_mode": 33188,
      "old_path": "tools/gn/function_toolchain.cc",
      "new_id": "cbd8826fa850180a94c23a31bea212779845131a",
      "new_mode": 33188,
      "new_path": "tools/gn/function_toolchain.cc"
    },
    {
      "type": "modify",
      "old_id": "0e2729771c3f8e95267b1782203060a1237b3bd4",
      "old_mode": 33188,
      "old_path": "tools/gn/functions.cc",
      "new_id": "96bc915464c873f5e518fceb42301ca57788d63e",
      "new_mode": 33188,
      "new_path": "tools/gn/functions.cc"
    },
    {
      "type": "modify",
      "old_id": "fc968e58c217e73b29ee333f3aad8db85f5995bc",
      "old_mode": 33188,
      "old_path": "tools/gn/functions_target.cc",
      "new_id": "ceb0fbbd371a45d7cbec1eac5dc3939c1e48d265",
      "new_mode": 33188,
      "new_path": "tools/gn/functions_target.cc"
    },
    {
      "type": "modify",
      "old_id": "a4f4c348756a56ab28e20d5612c1523adf0f17af",
      "old_mode": 33188,
      "old_path": "tools/gn/gn.gyp",
      "new_id": "3a04387bb0eec141474854144cda65d20ea36999",
      "new_mode": 33188,
      "new_path": "tools/gn/gn.gyp"
    },
    {
      "type": "modify",
      "old_id": "30238e7bdbb20c8be14795df0fb40e6a33a2e779",
      "old_mode": 33188,
      "old_path": "tools/gn/group_target_generator.cc",
      "new_id": "d52eb90c5149fc3bf0bbc2b759414207145b3353",
      "new_mode": 33188,
      "new_path": "tools/gn/group_target_generator.cc"
    },
    {
      "type": "modify",
      "old_id": "a88ec03c881f1e06353ce489e061a78818f87a3d",
      "old_mode": 33188,
      "old_path": "tools/gn/group_target_generator.h",
      "new_id": "47399496ae08d866a6572fcd268d88ef89f23604",
      "new_mode": 33188,
      "new_path": "tools/gn/group_target_generator.h"
    },
    {
      "type": "modify",
      "old_id": "f668fd317ad58f08fca8cb03b9c027f61996c632",
      "old_mode": 33188,
      "old_path": "tools/gn/gyp_binary_target_writer.cc",
      "new_id": "140ea15b8b973f1aa0353b8c9e5dd78201134cfc",
      "new_mode": 33188,
      "new_path": "tools/gn/gyp_binary_target_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "8a55bdc3dd28c55ea0ee577a8799eccfd4517fba",
      "old_mode": 33188,
      "old_path": "tools/gn/gyp_target_writer.cc",
      "new_id": "29cec2c47b0e144715ee125c89a61469b1031d3d",
      "new_mode": 33188,
      "new_path": "tools/gn/gyp_target_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "27346b0ceea063b95ca0da4bec339b5fe68986e3",
      "old_mode": 33188,
      "old_path": "tools/gn/gyp_target_writer.h",
      "new_id": "597a609c75b2613df23bba09dbbe6ec69214c2b9",
      "new_mode": 33188,
      "new_path": "tools/gn/gyp_target_writer.h"
    },
    {
      "type": "modify",
      "old_id": "cc41039c07eac9c63d5b1ebedc6c8861effb8cb8",
      "old_mode": 33188,
      "old_path": "tools/gn/input_file_manager.cc",
      "new_id": "0c4bf280c408a2722e6145d821d2e57da42de6d8",
      "new_mode": 33188,
      "new_path": "tools/gn/input_file_manager.cc"
    },
    {
      "type": "modify",
      "old_id": "fa16975c58203f907bbd6e0813beb561e0e79342",
      "old_mode": 33188,
      "old_path": "tools/gn/item.cc",
      "new_id": "f2fe9fead983f3ba692291224cb6d7f9df5c418b",
      "new_mode": 33188,
      "new_path": "tools/gn/item.cc"
    },
    {
      "type": "modify",
      "old_id": "69115bd7b3e664dd67352834f0daded786d53f67",
      "old_mode": 33188,
      "old_path": "tools/gn/item.h",
      "new_id": "4d9f25beb04090354cbe4048c5fa530d85eb5638",
      "new_mode": 33188,
      "new_path": "tools/gn/item.h"
    },
    {
      "type": "delete",
      "old_id": "2143b06c3d5c80ac7128affbff2251e6229a4167",
      "old_mode": 33188,
      "old_path": "tools/gn/item_node.cc",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "dbee141b7373593091a93aa6ac0a8250e0634021",
      "old_mode": 33188,
      "old_path": "tools/gn/item_node.h",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "42e005b5990e53cfbb46a711a3194df347ee5560",
      "old_mode": 33188,
      "old_path": "tools/gn/item_tree.cc",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "59de49f3a08e8c8884cc74cf145ceb7f3bfbdbec",
      "old_mode": 33188,
      "old_path": "tools/gn/item_tree.h",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "9bc3df22eb7780422a898f881e926adbc2479be6",
      "old_mode": 33188,
      "old_path": "tools/gn/label_ptr.h",
      "new_id": "9cff9d9e5bbccc16d286f42d93424195f8eae1d7",
      "new_mode": 33188,
      "new_path": "tools/gn/label_ptr.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7e3ca3d0f3c78afbea48865aefb637d3d92cd11c",
      "new_mode": 33188,
      "new_path": "tools/gn/loader.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3b119c22c954937e368ff09e0fb5f942a5f0f385",
      "new_mode": 33188,
      "new_path": "tools/gn/loader.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6397684c2cc566055ea4630ccb3db46deb6e5292",
      "new_mode": 33188,
      "new_path": "tools/gn/loader_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "bdc0472417cc476928c8f22ec3ccb9662f3b6400",
      "old_mode": 33188,
      "old_path": "tools/gn/ninja_target_writer.cc",
      "new_id": "2b866262a19775bc72750920abbff45060dcc6f2",
      "new_mode": 33188,
      "new_path": "tools/gn/ninja_target_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "e1c3bf8c6ef5e5d8f3acd4a69cbf3e85168ccf61",
      "old_mode": 33188,
      "old_path": "tools/gn/ninja_target_writer.h",
      "new_id": "937b2402db60c64f435d51d90edbd720981a7717",
      "new_mode": 33188,
      "new_path": "tools/gn/ninja_target_writer.h"
    },
    {
      "type": "modify",
      "old_id": "5f33e69810c6b626a1fc317e46257a0b594a9473",
      "old_mode": 33188,
      "old_path": "tools/gn/ninja_toolchain_writer.cc",
      "new_id": "0a6b3de7c5337dca2cae4ef76cc4a0a49f040f18",
      "new_mode": 33188,
      "new_path": "tools/gn/ninja_toolchain_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "5d3daa5252d3291052337507a0a5cb2f9c5f158b",
      "old_mode": 33188,
      "old_path": "tools/gn/ninja_toolchain_writer.h",
      "new_id": "ff0ebc0fffd8e0803e6f1f58827077906dcf34af",
      "new_mode": 33188,
      "new_path": "tools/gn/ninja_toolchain_writer.h"
    },
    {
      "type": "modify",
      "old_id": "1fe893edd7e70c6f48a6a7501e54da38e7b43c70",
      "old_mode": 33188,
      "old_path": "tools/gn/ninja_writer.cc",
      "new_id": "e4c0a22a748ddb7d0a78236565b394d0d7962e74",
      "new_mode": 33188,
      "new_path": "tools/gn/ninja_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "c2efc9269e44c1f2c9d32d385c98fe0317edccd4",
      "old_mode": 33188,
      "old_path": "tools/gn/ninja_writer.h",
      "new_id": "8859f1ad65ec4e7e2c434d097108f87f5283e587",
      "new_mode": 33188,
      "new_path": "tools/gn/ninja_writer.h"
    },
    {
      "type": "modify",
      "old_id": "72c310bb071d1072698e3bdee6cf18b56c793965",
      "old_mode": 33188,
      "old_path": "tools/gn/scheduler.cc",
      "new_id": "254de0d5a097d6a4b5e24e8b7898de09cae33ce8",
      "new_mode": 33188,
      "new_path": "tools/gn/scheduler.cc"
    },
    {
      "type": "modify",
      "old_id": "4b2c0608742ce8cc4ed391766c3e73738ef84c0a",
      "old_mode": 33188,
      "old_path": "tools/gn/scheduler.h",
      "new_id": "8f4a13392f898468603d663675ba9f47a92e64f0",
      "new_mode": 33188,
      "new_path": "tools/gn/scheduler.h"
    },
    {
      "type": "modify",
      "old_id": "42277f7218eda43a3877634cba3d07fba05dfe7f",
      "old_mode": 33188,
      "old_path": "tools/gn/scope.cc",
      "new_id": "052c55de3a7ac7fe763186f657980f4ce46a9a7b",
      "new_mode": 33188,
      "new_path": "tools/gn/scope.cc"
    },
    {
      "type": "modify",
      "old_id": "0d1c156f31b312cefc344e0e2a46d2185231e3d5",
      "old_mode": 33188,
      "old_path": "tools/gn/scope.h",
      "new_id": "d4a35fff9b6380c888594b33931cf48b73cdcafd",
      "new_mode": 33188,
      "new_path": "tools/gn/scope.h"
    },
    {
      "type": "modify",
      "old_id": "1f4bc259c8c93e00a3243fee4ccc3348eaa6fdcb",
      "old_mode": 33188,
      "old_path": "tools/gn/scope_per_file_provider.cc",
      "new_id": "c2fdd3eef6cfbc3a5b559bf42af51c702dce5396",
      "new_mode": 33188,
      "new_path": "tools/gn/scope_per_file_provider.cc"
    },
    {
      "type": "modify",
      "old_id": "272061c488be588e66ae98043c974c6ff80c323f",
      "old_mode": 33188,
      "old_path": "tools/gn/script_target_generator.cc",
      "new_id": "8f414f4956471fc050ef9a6efbbbf6fa0111d04b",
      "new_mode": 33188,
      "new_path": "tools/gn/script_target_generator.cc"
    },
    {
      "type": "modify",
      "old_id": "f693145a060482b4f23f0529b5e63facd9a98bbb",
      "old_mode": 33188,
      "old_path": "tools/gn/script_target_generator.h",
      "new_id": "4d79e5103774b8488129d39e576a42b99190c94d",
      "new_mode": 33188,
      "new_path": "tools/gn/script_target_generator.h"
    },
    {
      "type": "modify",
      "old_id": "0f104a386477555f154ac2e2b720a79436f819b5",
      "old_mode": 33188,
      "old_path": "tools/gn/secondary/base/BUILD.gn",
      "new_id": "d6dc507ba2af42c092d734cf7fc83b404a4dac1f",
      "new_mode": 33188,
      "new_path": "tools/gn/secondary/base/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "b8de9766fe97e07a8fe7eff4e5079c3ec720b2d6",
      "old_mode": 33188,
      "old_path": "tools/gn/settings.cc",
      "new_id": "2715829998b71202624b3ba381d9b197f9d43c22",
      "new_mode": 33188,
      "new_path": "tools/gn/settings.cc"
    },
    {
      "type": "modify",
      "old_id": "df6a3d63576a470c284d8cef13b54f5f2a18df31",
      "old_mode": 33188,
      "old_path": "tools/gn/settings.h",
      "new_id": "f2e8925fdfc21e2c3911d68e4bf9560b69a8ef6e",
      "new_mode": 33188,
      "new_path": "tools/gn/settings.h"
    },
    {
      "type": "modify",
      "old_id": "ae02bf153b7e3a32b1f85259b3d23021b517bc80",
      "old_mode": 33188,
      "old_path": "tools/gn/setup.cc",
      "new_id": "4f18f57b35778358c62f0767d69b427bea082a2a",
      "new_mode": 33188,
      "new_path": "tools/gn/setup.cc"
    },
    {
      "type": "modify",
      "old_id": "8b6d714d39d7fe78709b1271542ef6c9cd270549",
      "old_mode": 33188,
      "old_path": "tools/gn/setup.h",
      "new_id": "a5f9e76d03eaad570c0785c9b452d7662267154a",
      "new_mode": 33188,
      "new_path": "tools/gn/setup.h"
    },
    {
      "type": "modify",
      "old_id": "28dcf91f2da7136c95b6f381d382c1efdf5b4b5e",
      "old_mode": 33188,
      "old_path": "tools/gn/target.cc",
      "new_id": "b12d284e957880ab33a2266b868fa358c6b60160",
      "new_mode": 33188,
      "new_path": "tools/gn/target.cc"
    },
    {
      "type": "modify",
      "old_id": "13b278c781f89e2de7cc3e3e207161ad1acada51",
      "old_mode": 33188,
      "old_path": "tools/gn/target.h",
      "new_id": "58f0de1bffa9772f57068f602f249ddd9ab6f877",
      "new_mode": 33188,
      "new_path": "tools/gn/target.h"
    },
    {
      "type": "modify",
      "old_id": "3bb51eb9863c6c9855ef8ff0a9241d5c46cb44de",
      "old_mode": 33188,
      "old_path": "tools/gn/target_generator.cc",
      "new_id": "81c4394e0e2006de6f842f4bd7dcf90e008f65c0",
      "new_mode": 33188,
      "new_path": "tools/gn/target_generator.cc"
    },
    {
      "type": "modify",
      "old_id": "583e57fc31c61ff30de95a0054611fe51714b9fa",
      "old_mode": 33188,
      "old_path": "tools/gn/target_generator.h",
      "new_id": "6fa39b19183ff3123f6ca3952108359eceff9ca0",
      "new_mode": 33188,
      "new_path": "tools/gn/target_generator.h"
    },
    {
      "type": "delete",
      "old_id": "eb5c86dd901ed80ce4565f4371a394d35132b0f4",
      "old_mode": 33188,
      "old_path": "tools/gn/target_manager.cc",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "f7459ff51f1d6ab232fcf22a59b30c6b2ae96b41",
      "old_mode": 33188,
      "old_path": "tools/gn/target_manager.h",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "a1a3ad219b865bf827757091e8758460e43a03f1",
      "old_mode": 33188,
      "old_path": "tools/gn/target_manager_unittest.cc",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "e149e92d08448a6704dd9582606ab5e6edce5567",
      "old_mode": 33188,
      "old_path": "tools/gn/test_with_scope.cc",
      "new_id": "97eb2fbbcd23cd7cc670c3cfcb1d1c89525c4748",
      "new_mode": 33188,
      "new_path": "tools/gn/test_with_scope.cc"
    },
    {
      "type": "delete",
      "old_id": "4edf212218ca747c8b648d9eaf62cae3e6825482",
      "old_mode": 33188,
      "old_path": "tools/gn/toolchain_manager.cc",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "9e75f33e0ce663a169a93615fcf14b6446ee3841",
      "old_mode": 33188,
      "old_path": "tools/gn/toolchain_manager.h",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "429cc71f0f430f91e7ff130253ec86743cedb971",
      "old_mode": 33188,
      "old_path": "tools/gn/trace.cc",
      "new_id": "aa73eba93b526fa74e0eabbd8c90e1b15c44cb96",
      "new_mode": 33188,
      "new_path": "tools/gn/trace.cc"
    },
    {
      "type": "modify",
      "old_id": "dcd80601f6134bbbcbdc6a8c986f06507007658f",
      "old_mode": 33188,
      "old_path": "tools/gn/trace.h",
      "new_id": "b795bf771e1d12c55e4adaf1cbd920fe3299c7ee",
      "new_mode": 33188,
      "new_path": "tools/gn/trace.h"
    }
  ]
}
