)]}'
{
  "commit": "77cd6ab62108c2d4ddd4343abd9bae17c406be4b",
  "tree": "0c3e054326d70a5b75bd9b7e5c7bbaf525c1cb70",
  "parents": [
    "952dfc6944b29582482ff50a85c04879406c06ba"
  ],
  "author": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Fri Dec 04 12:07:47 2009 -0800"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Sat Dec 05 10:54:17 2009 -0800"
  },
  "message": "Fix diff -B/--dirstat miscounting of newly added contents\n\nWhat used to happen is that diffcore_count_changes() simply ignored any\nhashes in the destination that didn\u0027t match hashes in the source. EXCEPT\nif the source hash didn\u0027t exist at all, in which case it would count _one_\ndestination hash that happened to have the \"next\" hash value.  As a\nconsequence, newly added material was often undercounted, making output\nfrom --dirstat and \"complete rewrite\" detection used by -B unrelialble.\n\nThis changes it so that:\n\n - whenever it bypasses a destination hash (because it doesn\u0027t match a\n   source), it counts the bytes associated with that as \"literal added\"\n\n - at the end (once we have used up all the source hashes), we do the same\n   thing with the remaining destination hashes.\n\n - when hashes do match, and we use the difference in counts as a value,\n   we also use up that destination hash entry (the \u0027d++\u0027).\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e670f8512558c38d9a9d6e754cfc609b042b1195",
      "old_mode": 33188,
      "old_path": "diffcore-delta.c",
      "new_id": "7cf431d261f9a35679ead7c8acda15aecdb8720d",
      "new_mode": 33188,
      "new_path": "diffcore-delta.c"
    }
  ]
}
