)]}'
{
  "commit": "663b2b1b90bf76275044824ddeca96aaec240f09",
  "tree": "1d52df4f64a22b1d9e6d99e9d11432bbe21a669e",
  "parents": [
    "3103e9848f7b7534eac14c0521d7b49b32466b70"
  ],
  "author": {
    "name": "Derrick Stolee",
    "email": "dstolee@microsoft.com",
    "time": "Thu Sep 17 18:11:46 2020 +0000"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Thu Sep 17 11:30:05 2020 -0700"
  },
  "message": "maintenance: add commit-graph task\n\nThe first new task in the \u0027git maintenance\u0027 builtin is the\n\u0027commit-graph\u0027 task. This updates the commit-graph file\nincrementally with the command\n\n\tgit commit-graph write --reachable --split\n\nBy writing an incremental commit-graph file using the \"--split\"\noption we minimize the disruption from this operation. The default\nbehavior is to merge layers until the new \"top\" layer is less than\nhalf the size of the layer below. This provides quick writes most\nof the time, with the longer writes following a power law\ndistribution.\n\nMost importantly, concurrent Git processes only look at the\ncommit-graph-chain file for a very short amount of time, so they\nwill verly likely not be holding a handle to the file when we try\nto replace it. (This only matters on Windows.)\n\nIf a concurrent process reads the old commit-graph-chain file, but\nour job expires some of the .graph files before they can be read,\nthen those processes will see a warning message (but not fail).\nThis could be avoided by a future update to use the --expire-time\nargument when writing the commit-graph.\n\nSigned-off-by: Derrick Stolee \u003cdstolee@microsoft.com\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "04fa0fe3298e7793bf0f865c5dccbb500d09bf20",
      "old_mode": 33188,
      "old_path": "Documentation/git-maintenance.txt",
      "new_id": "fc5dbcf0b9efd3ab6630dd2de94f8d1e8fcc16e5",
      "new_mode": 33188,
      "new_path": "Documentation/git-maintenance.txt"
    },
    {
      "type": "modify",
      "old_id": "904fb2d9aa320adf8a4621c574dd81822428af44",
      "old_mode": 33188,
      "old_path": "builtin/gc.c",
      "new_id": "86b807a008e1951b2b83d784c03e5d358d90574e",
      "new_mode": 33188,
      "new_path": "builtin/gc.c"
    },
    {
      "type": "modify",
      "old_id": "e51c91dd5b0af4e4946091e5ca7f06707b3a0c5b",
      "old_mode": 33188,
      "old_path": "commit-graph.c",
      "new_id": "a9b0db7d4ac4c1e3ef7e45f6fee202ec86b1cbb5",
      "new_mode": 33188,
      "new_path": "commit-graph.c"
    },
    {
      "type": "modify",
      "old_id": "09a97030dcd8a2ea570da097d6f27a5d0cbaf934",
      "old_mode": 33188,
      "old_path": "commit-graph.h",
      "new_id": "765221cdcc11410271ac93e5bf275e5ae21027cb",
      "new_mode": 33188,
      "new_path": "commit-graph.h"
    },
    {
      "type": "modify",
      "old_id": "5637053bf658209d598ac5b31ea7028f620cc44d",
      "old_mode": 33261,
      "old_path": "t/t7900-maintenance.sh",
      "new_id": "505a1b4d60acf8ffc24b205b1698151c72848960",
      "new_mode": 33261,
      "new_path": "t/t7900-maintenance.sh"
    }
  ]
}
