)]}'
{
  "commit": "7bd97d6dff3b09600465b818163a413115dad217",
  "tree": "61f80410d7bcafe71c0bfc3b0dfecd77093c38e8",
  "parents": [
    "5fa0f5238b0cd46cfe7f6fa76c3f526ea98148d9"
  ],
  "author": {
    "name": "René Scharfe",
    "email": "l.s.r@web.de",
    "time": "Thu Sep 19 22:48:30 2019 +0200"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Fri Sep 20 11:11:26 2019 -0700"
  },
  "message": "git: use COPY_ARRAY and MOVE_ARRAY in handle_alias()\n\nUse the macro COPY_ARRAY to copy array elements and MOVE_ARRAY to do the\nsame for moving them backwards in an array with potential overlap.  The\nresult is shorter and safer, as it infers the element type automatically\nand does a (very) basic type compatibility check for its first two\narguments.\n\nThese cases were missed by Coccinelle and contrib/coccinelle/array.cocci\nbecause the type of the elements is \"const char *\", not \"char *\", and\nthe rules in the semantic patch cautiously insist on the sizeof operator\nbeing used on exactly the same type to avoid generating transformations\nthat introduce subtle bugs into tricky code.\n\nSigned-off-by: René Scharfe \u003cl.s.r@web.de\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c1ee7124edcfb0417539134d50212e997dc71c1f",
      "old_mode": 33188,
      "old_path": "git.c",
      "new_id": "ce6ab0ece2cc6dbf153946701eed446940c9d304",
      "new_mode": 33188,
      "new_path": "git.c"
    }
  ]
}
