)]}'
{
  "commit": "6b67e0dc068d1bfd07686071b70f60078380666f",
  "tree": "826541fa52ed5fdee3458bd4c11af57af58a8368",
  "parents": [
    "5a48d24012fa39cdd02c1cb614db2e62d445e2ce"
  ],
  "author": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Thu Sep 01 15:43:35 2011 -0700"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Thu Sep 01 15:46:13 2011 -0700"
  },
  "message": "fetch: verify we have everything we need before updating our ref\n\nThe \"git fetch\" command works in two phases. The remote side tells us what\nobjects are at the tip of the refs we are fetching from, and transfers the\nobjects missing from our side. After storing the objects in our repository,\nwe update our remote tracking branches to point at the updated tips of the\nrefs.\n\nA broken or malicious remote side could send a perfectly well-formed pack\ndata during the object transfer phase, but there is no guarantee that the\ngiven data actually fill the gap between the objects we originally had and\nthe refs we are updating to.\n\nAlthough this kind of breakage can be caught by running fsck after a\nfetch, it is much cheaper to verify that everything that is reachable from\nthe tips of the refs we fetched are indeed fully connected to the tips of\nour current set of refs before we update them.\n\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f9c41da475289b84fe849f7641406ebc94059630",
      "old_mode": 33188,
      "old_path": "builtin/fetch.c",
      "new_id": "bdb03ff54c51426f4c814dc7326e62b0bc3576c5",
      "new_mode": 33188,
      "new_path": "builtin/fetch.c"
    }
  ]
}
