)]}'
{
  "commit": "fc1b56f054a79400c4e72cb1aab97ba2605cbd83",
  "tree": "846a6523cb2d59642633cb163b9472c90f16d98c",
  "parents": [
    "3bc4181fde899e02aff89f7c0a47f18d37311cb3"
  ],
  "author": {
    "name": "Clemens Buchacher",
    "email": "drizzd@aon.at",
    "time": "Mon Aug 01 19:59:21 2011 +0200"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Mon Aug 01 16:21:55 2011 -0700"
  },
  "message": "notice error exit from pager\n\nIf the pager fails to run, git produces no output, e.g.:\n\n $ GIT_PAGER\u003dnot-a-command git log\n\nThe error reporting fails for two reasons:\n\n (1) start_command: There is a mechanism that detects errors during\n     execvp introduced in 2b541bf8 (start_command: detect execvp\n     failures early). The child writes one byte to a pipe only if\n     execvp fails.  The parent waits for either EOF, when the\n     successful execvp automatically closes the pipe (see\n     FD_CLOEXEC in fcntl(1)), or it reads a single byte, in which\n     case it knows that the execvp failed. This mechanism is\n     incompatible with the workaround introduced in 35ce8622\n     (pager: Work around window resizing bug in \u0027less\u0027), which\n     waits for input from the parent before the exec. Since both\n     the parent and the child are waiting for input from each\n     other, that would result in a deadlock. In order to avoid\n     that, the mechanism is disabled by closing the child_notifier\n     file descriptor.\n\n (2) finish_command: The parent correctly detects the 127 exit\n     status from the child, but the error output goes nowhere,\n     since by that time it is already being redirected to the\n     child.\n\nNo simple solution for (1) comes to mind.\n\nNumber (2) can be solved by not sending error output to the pager.\nNot redirecting error output to the pager can result in the pager\noverwriting error output with standard output, however.\n\nSince there is no reliable way to handle error reporting in the\nparent, produce the output in the child instead.\n\nSigned-off-by: Clemens Buchacher \u003cdrizzd@aon.at\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5c91f37fb891c09bffa20343e037979ac340eaf1",
      "old_mode": 33188,
      "old_path": "run-command.c",
      "new_id": "a2796c4caecc0fae6ea1a95b2c965b92d98f8a31",
      "new_mode": 33188,
      "new_path": "run-command.c"
    }
  ]
}
