)]}'
{
  "commit": "3f9ac8d259fb919e001671c5e403e5fceaabf0d8",
  "tree": "6a2f4bbf0f88d1f1cbdf8bf1ad873616eec392bc",
  "parents": [
    "26125f6b9be8dac31f56bf3da60dfa0df6dc0b59"
  ],
  "author": {
    "name": "Junio C Hamano",
    "email": "junkio@cox.net",
    "time": "Wed Feb 15 17:34:29 2006 -0800"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "junkio@cox.net",
    "time": "Wed Feb 22 13:14:56 2006 -0800"
  },
  "message": "pack-objects: reuse data from existing packs.\n\nWhen generating a new pack, notice if we have already needed\nobjects in existing packs.  If an object is stored deltified,\nand its base object is also what we are going to pack, then\nreuse the existing deltified representation unconditionally,\nbypassing all the expensive find_deltas() and try_deltas()\ncalls.\n\nAlso, notice if what we are going to write out exactly match\nwhat is already in an existing pack (either deltified or just\ncompressed).  In such a case, we can just copy it instead of\ngoing through the usual uncompressing \u0026 recompressing cycle.\n\nWithout this patch, in linux-2.6 repository with about 1500\nloose objects and a single mega pack:\n\n    $ git-rev-list --objects v2.6.16-rc3 \u003eRL\n    $ wc -l RL\n    184141 RL\n    $ time git-pack-objects p \u003cRL\n    Generating pack...\n    Done counting 184141 objects.\n    Packing 184141 objects....................\n    a1fc7b3e537fcb9b3c46b7505df859f0a11e79d2\n\n    real    12m4.323s\n    user    11m2.560s\n    sys     0m55.950s\n\nWith this patch, the same input:\n\n    $ time ../git.junio/git-pack-objects q \u003cRL\n    Generating pack...\n    Done counting 184141 objects.\n    Packing 184141 objects.....................\n    a1fc7b3e537fcb9b3c46b7505df859f0a11e79d2\n    Total 184141, written 184141, reused 182441\n\n    real    1m2.608s\n    user    0m55.090s\n    sys     0m1.830s\n\nSigned-off-by: Junio C Hamano \u003cjunkio@cox.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c5a5e61605b7aefde9fd3cc8c43a085156671bc9",
      "old_mode": 33188,
      "old_path": "pack-objects.c",
      "new_id": "70fb2afeb8cfdef06b20dc7f96cd427f7c50ab60",
      "new_mode": 33188,
      "new_path": "pack-objects.c"
    },
    {
      "type": "modify",
      "old_id": "9dafa2b6d2c76919594218b12a2a36bd9067f2b7",
      "old_mode": 33188,
      "old_path": "pack.h",
      "new_id": "694e0c56f0b67c1ae9b7a94a243aca7b8859e50c",
      "new_mode": 33188,
      "new_path": "pack.h"
    },
    {
      "type": "modify",
      "old_id": "c08da35d8a2c9f9fb02370769e87578ec1f2fcce",
      "old_mode": 33188,
      "old_path": "sha1_file.c",
      "new_id": "f4b10894c8be74d3ab3be8ec6d81f35634399010",
      "new_mode": 33188,
      "new_path": "sha1_file.c"
    }
  ]
}
