)]}'
{
  "commit": "35a71f1402b40b580d985a9d7e5fb1c9ec4d0232",
  "tree": "4e37983d9fc85fc63d8ee5731b5da285d7b5b9f0",
  "parents": [
    "06121a0a8328c8aaa7a023cf6ebb142e9dc2b45c"
  ],
  "author": {
    "name": "Jeff King",
    "email": "peff@peff.net",
    "time": "Tue Jan 17 01:02:32 2012 -0500"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Mon Jan 16 22:15:19 2012 -0800"
  },
  "message": "credential-cache: ignore \"connection refused\" errors\n\nThe credential-cache helper will try to connect to its\ndaemon over a unix socket. Originally, a failure to do so\nwas silently ignored, and we would either give up (if\nperforming a \"get\" or \"erase\" operation), or spawn a new\ndaemon (for a \"store\" operation).\n\nBut since 8ec6c8d, we try to report more errors. We detect a\nmissing daemon by checking for ENOENT on our connection\nattempt.  If the daemon is missing, we continue as before\n(giving up or spawning a new daemon). For any other error,\nwe die and report the problem.\n\nHowever, checking for ENOENT is not sufficient for a missing\ndaemon. We might also get ECONNREFUSED if a dead daemon\nprocess left a stale socket. This generally shouldn\u0027t\nhappen, as the daemon cleans up after itself, but the daemon\nmay not always be given a chance to do so (e.g., power loss,\n\"kill -9\").\n\nThe resulting state is annoying not just because the helper\noutputs an extra useless message, but because it actually\nblocks the helper from spawning a new daemon to replace the\nstale socket.\n\nFix it by checking for ECONNREFUSED.\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": "193301877f1ee29f54c2da0b933d9b7fe10f157a",
      "old_mode": 33188,
      "old_path": "credential-cache.c",
      "new_id": "9a03792c7de109e957a1f01924c4f66ba87b5c87",
      "new_mode": 33188,
      "new_path": "credential-cache.c"
    }
  ]
}
