)]}'
{
  "commit": "5cbf8246d2e68470648d123e356665fca9ffca73",
  "tree": "cfde44d8294c3867be28d2e38ec52f80530182c6",
  "parents": [
    "61432146ad707e969664c0151364e2d8da9fb157"
  ],
  "author": {
    "name": "Jeff King",
    "email": "peff@peff.net",
    "time": "Mon May 16 02:46:07 2011 -0400"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Mon May 16 16:20:01 2011 -0700"
  },
  "message": "connect: treat generic proxy processes like ssh processes\n\nThe git_connect function returns two ends of a pipe for\ntalking with a remote, plus a struct child_process\nrepresenting the other end of the pipe. If we have a direct\nsocket connection, then this points to a special \"no_fork\"\nchild process.\n\nThe code path for doing git-over-pipes or git-over-ssh sets\nup this child process to point to the child git command or\nthe ssh process. When we call finish_connect eventually, we\ncheck wait() on the command and report its return value.\n\nThe code path for git://, on the other hand, always sets it\nto no_fork. In the case of a direct TCP connection, this\nmakes sense; we have no child process. But in the case of a\nproxy command (configured by core.gitproxy), we do have a\nchild process, but we throw away its pid, and therefore\nignore its return code.\n\nInstead, let\u0027s keep that information in the proxy case, and\nrespect its return code, which can help catch some errors\n(though depending on your proxy command, it will be errors\nreported by the proxy command itself, and not propagated\nfrom git commands. Still, it is probably better to propagate\nsuch errors than to ignore them).\n\nIt also means that the child_process field can reliably be\nused to determine whether the returned descriptors are\nactually a full-duplex socket, which means we should be\nusing shutdown() instead of a simple close.\n\nSigned-off-by: Jeff King \u003cpeff@peff.net\u003e\nHelped-by: Johannes Sixt \u003cj6t@kdbg.org\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "db965c9982f1f2ae7e08331d3fa1d40e194a6520",
      "old_mode": 33188,
      "old_path": "connect.c",
      "new_id": "5884f6d0b22544b56100dfdfe616f79fd944f495",
      "new_mode": 33188,
      "new_path": "connect.c"
    }
  ]
}
