)]}'
{
  "commit": "ef0a76dc7c57f5f52130796e1c4bc8ae11af3637",
  "tree": "7ae4553aa1bb25c8d664317a237d32a16888dade",
  "parents": [
    "866d84ee68d3ba7bf09cfa75c7d6d79a59fb5b87"
  ],
  "author": {
    "name": "Brett Wilson",
    "email": "brettw@chromium.org",
    "time": "Thu Apr 05 01:14:20 2018 +0000"
  },
  "committer": {
    "name": "Commit Bot",
    "email": "commit-bot@chromium.org",
    "time": "Thu Apr 05 01:14:20 2018 +0000"
  },
  "message": "Implement \"friend\" for GN header checking.\n\nThis allows a target to include private headers it wouldn\u0027t otherwise be\nable to include. A target can provide a list of patterns of friend\ntargets that allow dependent targets to bypass public header checking.\n\nA proper dependency path is still required, this applies only to the\nconcept of public/private headers on a target. Without this, it\u0027s\ndifficult to make a target be explicit about its public headers while\nalso allowing that target\u0027s own tests to use internal headers.\n\nBUG\u003d732993\n\nChange-Id: I1cb94c7ac0db6f74cdcd49d08bcabedf70ea3eb0\nReviewed-on: https://chromium-review.googlesource.com/994453\nCommit-Queue: Brett Wilson \u003cbrettw@chromium.org\u003e\nReviewed-by: Dirk Pranke \u003cdpranke@chromium.org\u003e\nCr-Original-Commit-Position: refs/heads/master@{#548279}\nCr-Mirrored-From: https://chromium.googlesource.com/chromium/src\nCr-Mirrored-Commit: 28f3c4987aacf447643a4f36e4553cc830508b0b",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "86593063bf97465324e9a3cb738b2c1d8316399a",
      "old_mode": 33188,
      "old_path": "tools/gn/binary_target_generator.cc",
      "new_id": "4ff9366524cafc7efb7ae4d0df10770c02447908",
      "new_mode": 33188,
      "new_path": "tools/gn/binary_target_generator.cc"
    },
    {
      "type": "modify",
      "old_id": "0788a2042c0c014d9d87b5f4878a0cdfcd40d20d",
      "old_mode": 33188,
      "old_path": "tools/gn/binary_target_generator.h",
      "new_id": "40fc3141e26a0621ea51d434b07fc78560418b3b",
      "new_mode": 33188,
      "new_path": "tools/gn/binary_target_generator.h"
    },
    {
      "type": "modify",
      "old_id": "0e203678231d19de88c2954c9906d5061befb065",
      "old_mode": 33188,
      "old_path": "tools/gn/functions_target.cc",
      "new_id": "0ceaba0668414195cd81a00650cca28a9a5178cc",
      "new_mode": 33188,
      "new_path": "tools/gn/functions_target.cc"
    },
    {
      "type": "modify",
      "old_id": "c47e6f1f3e0682117414ef57f5b905021741f05b",
      "old_mode": 33188,
      "old_path": "tools/gn/header_checker.cc",
      "new_id": "57d2642665cc4098d423a02e05e8825c4a647f99",
      "new_mode": 33188,
      "new_path": "tools/gn/header_checker.cc"
    },
    {
      "type": "modify",
      "old_id": "3645d7ae06919ba8f5f7078225bce8b11a9d9a8c",
      "old_mode": 33188,
      "old_path": "tools/gn/header_checker.h",
      "new_id": "b1d0f79fe43ccd02999d5bc1812181f5d774f5e0",
      "new_mode": 33188,
      "new_path": "tools/gn/header_checker.h"
    },
    {
      "type": "modify",
      "old_id": "5bb5c707901dfcfb4aadfbff6884413b27e163bf",
      "old_mode": 33188,
      "old_path": "tools/gn/header_checker_unittest.cc",
      "new_id": "dcfa7bbb6fe4ce90cf149e8eb9eaf2158dd3b6a2",
      "new_mode": 33188,
      "new_path": "tools/gn/header_checker_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "c4e9bb65322f7e58f2ba3386fe18f2969a123c95",
      "old_mode": 33188,
      "old_path": "tools/gn/label_pattern.cc",
      "new_id": "b2568e7d315b1e437eae51fa50e00e4ca60e7fd0",
      "new_mode": 33188,
      "new_path": "tools/gn/label_pattern.cc"
    },
    {
      "type": "modify",
      "old_id": "7d0768c834b08e158c95a7c875436ad25f66ef69",
      "old_mode": 33188,
      "old_path": "tools/gn/label_pattern.h",
      "new_id": "774b81a62fcc628300cbc952970b57daee0eb410",
      "new_mode": 33188,
      "new_path": "tools/gn/label_pattern.h"
    },
    {
      "type": "modify",
      "old_id": "b286518f5a71926a836ec766ec4fc8edadb19488",
      "old_mode": 33188,
      "old_path": "tools/gn/target.h",
      "new_id": "568bea54d57f0a68ac63c13f122b784866e03d81",
      "new_mode": 33188,
      "new_path": "tools/gn/target.h"
    },
    {
      "type": "modify",
      "old_id": "80c6b360ee127be7130b83a950c5d82b4e6a16b9",
      "old_mode": 33188,
      "old_path": "tools/gn/variables.cc",
      "new_id": "591a945934f331b0a6160025b9a6af25c63a88c0",
      "new_mode": 33188,
      "new_path": "tools/gn/variables.cc"
    },
    {
      "type": "modify",
      "old_id": "0e3891d53a9808824a6eaf0e65fb2298c6645c0f",
      "old_mode": 33188,
      "old_path": "tools/gn/variables.h",
      "new_id": "80615f92cf3278bfdfe5f458a707face25047015",
      "new_mode": 33188,
      "new_path": "tools/gn/variables.h"
    },
    {
      "type": "modify",
      "old_id": "54d728054796c7151f69efd3871d4c1653c532f1",
      "old_mode": 33188,
      "old_path": "tools/gn/visibility.cc",
      "new_id": "ec96824ffa1c2d4a69110530bd74bf8d253cf9a8",
      "new_mode": 33188,
      "new_path": "tools/gn/visibility.cc"
    }
  ]
}
