)]}'
{
  "commit": "31a7be561ef34c134447d92a3d391b17ecd7c790",
  "tree": "afaefd046551596817595c4dbd10534461cc0d7d",
  "parents": [
    "35de228f331101ba17bbc658c3cd910e54725517"
  ],
  "author": {
    "name": "Colin Cross",
    "email": "ccross@android.com",
    "time": "Wed May 13 00:04:36 2015 -0700"
  },
  "committer": {
    "name": "Colin Cross",
    "email": "ccross@android.com",
    "time": "Wed May 13 11:09:38 2015 -0700"
  },
  "message": "Catch exceptions in project list generator\n\nIf the generator that produces per-project worker arguments raises an\nexception it triggers python bug http://bugs.python.org/issue8296.\nRewrite the generator expression as a generator function, and catch\nExceptions and KeyboardInterrupts to end the iteration.\n\nAlso add a pool worker initializer to disable SIGINT to prevent\nKeyboardInterrupts inside multiprocessing.Pool in the worker threads\ncausing the same problem.\n\nFixes easy-to-reproduce hangs when hitting ctrl-c during\nrepo forall -c echo\n\nChange-Id: Ie4a65b3e1e07a64ed6bb6ff20f3912c4326718ca\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "88b23fbdde6fa757bb34c32d2ad2618b5f01f177",
      "old_mode": 33188,
      "old_path": "subcmds/forall.py",
      "new_id": "6a6d30c9a84baadeb6f5f53b7f6de32c38bc145c",
      "new_mode": 33188,
      "new_path": "subcmds/forall.py"
    }
  ]
}
