)]}'
{
  "commit": "aff489a42ae494b0ebcdd06867ad88c17d9a0629",
  "tree": "44ae5ef2aa07cb1ad68d5dd887317e79213e5797",
  "parents": [
    "08bfc84b49259750adb4b5075c8c7e0d110a1127"
  ],
  "author": {
    "name": "Sylvain Defresne",
    "email": "sdefresne@chromium.org",
    "time": "Wed Mar 11 18:27:43 2020 +0100"
  },
  "committer": {
    "name": "Commit Bot",
    "email": "commit-bot@chromium.org",
    "time": "Wed Mar 11 17:45:30 2020 +0000"
  },
  "message": "Add \"filter_{exclude,include}\" intrinsic functions to GN\n\nSome templates in chromium abuses set_sources_assignment_filter to\nfilter elements out of a list. As set_sources_assignment_filter is\nconsidered a mis-feature (and a consensus to remove it), there is\na need for an alternative way to filter lists of strings.\n\nAdd two intrinsics functions \"function_exclude\" \u0026 \"filter_include\"\nthat take a list of string and a list of pattern and return all\nthe elements from the first list that match respectively none or\nat least one of the patterns.\n\nBug: 35\nChange-Id: I94546e15fa35122e66c3a0bbadb5410b18e8be65\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/6400\nCommit-Queue: Sylvain Defresne \u003csdefresne@chromium.org\u003e\nReviewed-by: Brett Wilson \u003cbrettw@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "758c51aef953195891fa6fa989afd03e3d5a4891",
      "old_mode": 33261,
      "old_path": "build/gen.py",
      "new_id": "bcd9f15d825d5ca5fae83016e21e9346aa3a2835",
      "new_mode": 33261,
      "new_path": "build/gen.py"
    },
    {
      "type": "modify",
      "old_id": "cbf9db129430ea2cb1d620f814a3e75513f41e5a",
      "old_mode": 33188,
      "old_path": "docs/reference.md",
      "new_id": "c158fa423f2797b082af63a438733280670582c8",
      "new_mode": 33188,
      "new_path": "docs/reference.md"
    },
    {
      "type": "modify",
      "old_id": "fdbd679806ce98acbd4b8197c4cbdbb0c370ac10",
      "old_mode": 33188,
      "old_path": "src/gn/command_help.cc",
      "new_id": "f03a4e74515338704be846088c1730cf5bf5cece",
      "new_mode": 33188,
      "new_path": "src/gn/command_help.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "49eacfa1f05b4521c3f4849161a577c1be1a9611",
      "new_mode": 33188,
      "new_path": "src/gn/function_filter.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4269f18e3b48ab2a92e83e8ace7847c236ffa0ed",
      "new_mode": 33188,
      "new_path": "src/gn/function_filter_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "abbf18896226425ae8a3529722b3e13b4b3b4dc4",
      "old_mode": 33188,
      "old_path": "src/gn/functions.cc",
      "new_id": "314173b122955254157a44eadc8805c0c2d94981",
      "new_mode": 33188,
      "new_path": "src/gn/functions.cc"
    },
    {
      "type": "modify",
      "old_id": "50275591aa5d9c1e288dcb4c50a8b8e04d2e8055",
      "old_mode": 33188,
      "old_path": "src/gn/functions.h",
      "new_id": "dbcce398fe5648fbadc3e5a01dc019a2fe4f0382",
      "new_mode": 33188,
      "new_path": "src/gn/functions.h"
    },
    {
      "type": "modify",
      "old_id": "da3f134c8cb767609645c25f52fccc519aec02a6",
      "old_mode": 33188,
      "old_path": "src/gn/pattern.cc",
      "new_id": "cf03bab91662c091c5e84fed1b3e882f41677311",
      "new_mode": 33188,
      "new_path": "src/gn/pattern.cc"
    },
    {
      "type": "modify",
      "old_id": "a1762061bdf93103a48d357896a609b5f7bf7677",
      "old_mode": 33188,
      "old_path": "src/gn/pattern.h",
      "new_id": "f833ca4d63e7f066040ac5e3b2b06bae118798d1",
      "new_mode": 33188,
      "new_path": "src/gn/pattern.h"
    }
  ]
}
