)]}'
{
  "commit": "fcd428f4a952a19d7553a9447fd4fa3c3584c6e6",
  "tree": "ce311aa3ae07c65b099535947ca24c58e7cb4985",
  "parents": [
    "eac14f8909d986a38d9eab4a7f926af41dd64a4f"
  ],
  "author": {
    "name": "Karsten Blees",
    "email": "blees@dcon.de",
    "time": "Thu Mar 01 21:53:54 2012 +0100"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Tue Jun 10 13:32:59 2014 -0700"
  },
  "message": "Win32: fix broken pipe detection\n\nAs of \"Win32: Thread-safe windows console output\", git-log no longer\nterminates when the pager process dies. This is due to disabling buffering\nfor the replaced stdout / stderr streams. Git-log will periodically fflush\nstdout (see write_or_die.c/mayble_flush_or_die()), but with no buffering,\nthis is a NOP that always succeeds (so we never detect the EPIPE error).\n\nExchange the original console handles with our console thread pipe handles\nby accessing the internal MSVCRT data structures directly (which are\nexposed via __pioinfo for some reason).\n\nImplement this with minimal assumptions about the actual data structure to\nmake it work with different (hopefully even future) MSVCRT versions.\n\nWhile messing with internal data structures is ugly, this patch solves the\nproblem at the source instead of adding more workarounds. We no longer need\nthe special winansi_isatty override, and the limitations documented in\n\"Win32: Thread-safe windows console output\" are gone (i.e. fdopen(1/2)\nreturns unbuffered streams now, and isatty() for duped console file\ndescriptors works as expected).\n\nSigned-off-by: Karsten Blees \u003cblees@dcon.de\u003e\nSigned-off-by: Stepan Kasal \u003ckasal@ucw.cz\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4b638d83361abe2abd8c1a13139ed5ffd71e9cc6",
      "old_mode": 33188,
      "old_path": "compat/mingw.h",
      "new_id": "8dac6f9d6bc91c7949533d5d6d987530d6993b01",
      "new_mode": 33188,
      "new_path": "compat/mingw.h"
    },
    {
      "type": "modify",
      "old_id": "fcdd6dc1b394bc71fa71435534f260d3338548a1",
      "old_mode": 33188,
      "old_path": "compat/winansi.c",
      "new_id": "f96d5c28fc0d634139e0c9667142294fc1b9afc1",
      "new_mode": 33188,
      "new_path": "compat/winansi.c"
    }
  ]
}
