)]}'
{
  "commit": "2f215ff10bdf02f6c760ea34968fc39ae75ae449",
  "tree": "fc0085c157f8dd8304d4b90b9d59e95644e43289",
  "parents": [
    "2efbb7f5218d5ca9d50cbcb86a365a08b2981d77"
  ],
  "author": {
    "name": "Jonathan Tan",
    "email": "jonathantanmy@google.com",
    "time": "Tue Oct 09 11:40:37 2018 -0700"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Wed Oct 10 10:20:43 2018 +0900"
  },
  "message": "cache-tree: skip some blob checks in partial clone\n\nIn a partial clone, whenever a sparse checkout occurs, the existence of\nall blobs in the index is verified, whether they are included or\nexcluded by the .git/info/sparse-checkout specification. This\nsignificantly degrades performance because a lazy fetch occurs whenever\nthe existence of a missing blob is checked.\n\nThis is because cache_tree_update() checks the existence of all objects\nin the index, whether or not CE_SKIP_WORKTREE is set on them. Teach\ncache_tree_update() to skip checking CE_SKIP_WORKTREE objects when the\nrepository is a partial clone. This improves performance for sparse\ncheckout and also other operations that use cache_tree_update().\n\nInstead of completely removing the check, an argument could be made that\nthe check should instead be replaced by a check that the blob is\npromised, but for performance reasons, I decided not to do this.\nIf the user needs to verify the repository, it can be done using fsck\n(which will notify if a tree points to a missing and non-promised blob,\nwhether the blob is included or excluded by the sparse-checkout\nspecification).\n\nSigned-off-by: Jonathan Tan \u003cjonathantanmy@google.com\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5ce51468f0b402fd2121e2c8b51ff12703d431ba",
      "old_mode": 33188,
      "old_path": "cache-tree.c",
      "new_id": "f210481f9b53d389b1f55c786bc9a8fc34252c97",
      "new_mode": 33188,
      "new_path": "cache-tree.c"
    },
    {
      "type": "modify",
      "old_id": "25d7c700f6f480076f3ad00e6eeb709f8de517fa",
      "old_mode": 33261,
      "old_path": "t/t1090-sparse-checkout-scope.sh",
      "new_id": "090b7fc3d35d1a46a18b8ae385a7cc1213e6650d",
      "new_mode": 33261,
      "new_path": "t/t1090-sparse-checkout-scope.sh"
    }
  ]
}
