)]}'
{
  "commit": "0ea1c89ba616397ef7e5f6f601ef7a24d2c27b8e",
  "tree": "be4b99aacc57c03083c5e199dd8a59457c068ed1",
  "parents": [
    "200a76b74db5c2c75bcf73773cb85c5603ec038e"
  ],
  "author": {
    "name": "Johannes Sixt",
    "email": "j6t@kdbg.org",
    "time": "Sat Mar 06 16:40:43 2010 +0100"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Sun Mar 07 00:37:36 2010 -0800"
  },
  "message": "Dying in an async procedure should only exit the thread, not the process.\n\nAsync procedures are intended as helpers that perform a very restricted\ntask, and the caller usually has to manage them in a larger context.\nConceptually, the async procedure is not concerned with the \"bigger\npicture\" in whose context it is run. When it dies, it is not supposed\nto destroy this \"bigger picture\", but rather only its own limit view\nof the world. On POSIX, the async procedure is run in its own process,\nand exiting this process naturally had only these limited effects.\n\nOn Windows (or when ASYNC_AS_THREAD is set), calling die() exited the\nwhole process, destroying the caller (the \"big picture\") as well.\nThis fixes it to exit only the thread.\n\nWithout ASYNC_AS_THREAD, one particular effect of exiting the async\nprocedure process is that it automatically closes file descriptors, most\nnotably the writable end of the pipe that the async procedure writes to.\n\nThe async API already requires that the async procedure closes the pipe\nends when it exits normally. But for calls to die() no requirements are\nimposed. In the non-threaded case the pipe ends are closed implicitly\nby the exiting process, but in the threaded case, the die routine must\ntake care of closing them.\n\nNow t5530-upload-pack-error.sh passes on Windows.\n\nSigned-off-by: Johannes Sixt \u003cj6t@kdbg.org\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "77aefff2e27e369feffccbad817845af17597b02",
      "old_mode": 33188,
      "old_path": "run-command.c",
      "new_id": "66cc4bfa57b0fa8378a5d1f8562462db1d3c2078",
      "new_mode": 33188,
      "new_path": "run-command.c"
    }
  ]
}
