)]}'
{
  "commit": "f08cbf60fe11507b5ff722ceae95dfb86ce654ee",
  "tree": "d3369b36ff8a18fdce0bcf17aa9b644f734d4e7a",
  "parents": [
    "ee6f058384aa61ec175de9e45f413f209c6bf1dc"
  ],
  "author": {
    "name": "Jonathan Tan",
    "email": "jonathantanmy@google.com",
    "time": "Tue Sep 08 12:48:35 2020 -0700"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Tue Sep 08 15:52:17 2020 -0700"
  },
  "message": "index-pack: make quantum of work smaller\n\nCurrently, when index-pack resolves deltas, it does not split up delta\ntrees into threads: each delta base root (an object that is not a\nREF_DELTA or OFS_DELTA) can go into its own thread, but all deltas on\nthat root (direct or indirect) are processed in the same thread.\n\nThis is a problem when a repository contains a large text file (thus,\ndelta-able) that is modified many times - delta resolution time during\nfetching is dominated by processing the deltas corresponding to that\ntext file.\n\nThis patch contains a solution to that. When cloning using\n\n  git -c core.deltabasecachelimit\u003d1g clone \\\n    https://fuchsia.googlesource.com/third_party/vulkan-cts\n\non my laptop, clone time improved from 3m2s to 2m5s (using 3 threads,\nwhich is the default).\n\nThe solution is to have a global work stack. This stack contains delta\nbases (objects, whether appearing directly in the packfile or generated\nby delta resolution, that themselves have delta children) that need to\nbe processed; whenever a thread needs work, it peeks at the top of the\nstack and processes its next unprocessed child. If a thread finds the\nstack empty, it will look for more delta base roots to push on the stack\ninstead.\n\nThe main weakness of having a global work stack is that more time is\nspent in the mutex, but profiling has shown that most time is spent in\nthe resolution of the deltas themselves, so this shouldn\u0027t be an issue\nin practice. In any case, experimentation (as described in the clone\ncommand above) shows that this patch is a net improvement.\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": "c6d2acc13adfac9db7e90405036aec67d5030e58",
      "old_mode": 33188,
      "old_path": "builtin/index-pack.c",
      "new_id": "8da4031e72ecf99caca29b49b4b9cb9465c98cab",
      "new_mode": 33188,
      "new_path": "builtin/index-pack.c"
    }
  ]
}
