)]}'
{
  "commit": "5cac8d69065f302375840ee707e81bbad40a484a",
  "tree": "92e48e6e27827724be1198f66adf9d56152b731d",
  "parents": [
    "91cf43325647f0f0056d6d7a3c42b9514b3d62d7"
  ],
  "author": {
    "name": "David Pursehouse",
    "email": "dpursehouse@collab.net",
    "time": "Wed Aug 30 10:55:09 2017 +0900"
  },
  "committer": {
    "name": "Gerrit Code Review",
    "email": "noreply-gerritcodereview@google.com",
    "time": "Wed Aug 30 11:16:01 2017 +0000"
  },
  "message": "Update git submodules\n\n* Update plugins/hooks from branch \u0027master\u0027\n  - Refactor: Make Hook an abstract class\n    \n    Reduce visibility of Hook and AsynchronousHook to package private.\n    \n    Make Hook an abstract class, defining abstract \"execute\" methods.\n    \n    Rename the \"run\" and \"submit\" methods in SynchronousHook and\n    AsynchronousHook to \"execute\" to override that defined in Hook.\n    \n    Change-Id: I4f69aeb8cce336a5765d784a2a7e793743a33ad7\n    \n  - Refactor: Convert HookArgs to use guava Factory interface\n    \n    Instead of injecting all of the HookArgs dependencies into the\n    HookFactory and then explicitly passing them into the HookArgs\n    constructor, inject the dependencies into HookArgs itself and let\n    it be created using the guava Factory interface.\n    \n    This allows to remove several injected members from HookFactory\n    that were only necessary for creation of HookArgs. Having these\n    members only in HookArgs, where they are actually used, is cleaner.\n    \n    Change-Id: I56fa559d37c625c5c2c7e36e3ec58d3dd5f19462\n    ",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "785ef625084b0c61e1d195b429d085c66bff4253",
      "old_mode": 57344,
      "old_path": "plugins/hooks",
      "new_id": "18f8c78aad50509d39b489286b64d869752cccd6",
      "new_mode": 57344,
      "new_path": "plugins/hooks"
    }
  ]
}
