)]}'
{
  "commit": "c29b3962af3df80a43fab4ead4875bd2ca275e4c",
  "tree": "c78c409f1fde1425843d2b53bfc58d14be589274",
  "parents": [
    "c5eadcaab1d3969a4fbc009c65be622271edddd9"
  ],
  "author": {
    "name": "Jeff King",
    "email": "peff@peff.net",
    "time": "Sun Mar 22 23:54:05 2015 -0400"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Sun Mar 22 21:39:22 2015 -0700"
  },
  "message": "run-command: forbid using run_command with piped output\n\nBecause run_command both spawns and wait()s for the command\nbefore returning control to the caller, any reads from the\npipes we open must necessarily happen after wait() returns.\nThis can lead to deadlock, as the child process may block\non writing to us while we are blocked waiting for it to\nexit.\n\nWorse, it only happens when the child fills the pipe\nbuffer, which means that the problem may come and go\ndepending on the platform and the size of the output\nproduced by the child.\n\nLet\u0027s detect and flag this dangerous construct so that we\ncan catch potential bugs early in the test suite rather than\nhaving them happen in the field.\n\nSigned-off-by: Jeff King \u003cpeff@peff.net\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "65ecbe31d7a61b20f42fd40eaf72d422c0c57a99",
      "old_mode": 33188,
      "old_path": "run-command.c",
      "new_id": "4184e8d9f3a61459df1d4fa4cdec8a59386f1f17",
      "new_mode": 33188,
      "new_path": "run-command.c"
    }
  ]
}
