)]}'
{
  "commit": "850d2fec53ee188bab9e458f77906041ac7f1904",
  "tree": "159000ee6af85ab7e33477c9e94ff42e4c942a7f",
  "parents": [
    "b992657ed0e2720e20302b0ac8c210dff55950b2"
  ],
  "author": {
    "name": "Jeff King",
    "email": "peff@peff.net",
    "time": "Mon Feb 22 17:44:21 2016 -0500"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Mon Feb 22 14:50:32 2016 -0800"
  },
  "message": "convert manual allocations to argv_array\n\nThere are many manual argv allocations that predate the\nargv_array API. Switching to that API brings a few\nadvantages:\n\n  1. We no longer have to manually compute the correct final\n     array size (so it\u0027s one less thing we can screw up).\n\n  2. In many cases we had to make a separate pass to count,\n     then allocate, then fill in the array. Now we can do it\n     in one pass, making the code shorter and easier to\n     follow.\n\n  3. argv_array handles memory ownership for us, making it\n     more obvious when things should be free()d and and when\n     not.\n\nMost of these cases are pretty straightforward. In some, we\nswitch from \"run_command_v\" to \"run_command\" which lets us\ndirectly use the argv_array embedded in \"struct\nchild_process\".\n\nSigned-off-by: Jeff King \u003cpeff@peff.net\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4229cae390ddddcc74f3506dc892ed02b45d7eae",
      "old_mode": 33188,
      "old_path": "builtin/grep.c",
      "new_id": "95ddf96d1e416f59dff08a9dde71b04cdb2b6ccd",
      "new_mode": 33188,
      "new_path": "builtin/grep.c"
    },
    {
      "type": "modify",
      "old_id": "f2d6761af66c8bcc43c2da13f69fa083cf1e1e60",
      "old_mode": 33188,
      "old_path": "builtin/receive-pack.c",
      "new_id": "932afab9312ecdf12a6edcf8e649835a3006dc93",
      "new_mode": 33188,
      "new_path": "builtin/receive-pack.c"
    },
    {
      "type": "modify",
      "old_id": "e3cd25d580b0f1ee14b4a5037ceae8dc20b31f30",
      "old_mode": 33188,
      "old_path": "builtin/remote-ext.c",
      "new_id": "7457c743e8d8539c4f08df81f86c8b27c0bce392",
      "new_mode": 33188,
      "new_path": "builtin/remote-ext.c"
    },
    {
      "type": "modify",
      "old_id": "be70cd4da09ccab8850be41e19b0fc4b9a10f502",
      "old_mode": 33188,
      "old_path": "daemon.c",
      "new_id": "1e258ac8f9cebf135aa7ac07389f3ae4a49842ff",
      "new_mode": 33188,
      "new_path": "daemon.c"
    },
    {
      "type": "modify",
      "old_id": "6ed824cacfccddcb01104835b45ab934ff3f443e",
      "old_mode": 33188,
      "old_path": "git.c",
      "new_id": "e61a59c0145af8d24575e11d38ff91910b2cae8a",
      "new_mode": 33188,
      "new_path": "git.c"
    },
    {
      "type": "modify",
      "old_id": "af6e2f799ec7e2447ee888854442a7cbfe7644e4",
      "old_mode": 33188,
      "old_path": "line-log.c",
      "new_id": "5877986c5a683684997e96b35409e0d8c619fa05",
      "new_mode": 33188,
      "new_path": "line-log.c"
    },
    {
      "type": "modify",
      "old_id": "f404faf0f4b9ec298ccbae34fae0c79283884d26",
      "old_mode": 33188,
      "old_path": "remote-curl.c",
      "new_id": "e81b9d560b2508c08b877d18f6cfbfddb504e9a2",
      "new_mode": 33188,
      "new_path": "remote-curl.c"
    }
  ]
}
