)]}'
{
  "commit": "3d7747e318532a36a263c61cdf92f2decb6424ff",
  "tree": "3d00f009afde0dea8008eb7a40b379c9225023e5",
  "parents": [
    "0915a5b4cdf00a8c6c755b77b854725a183993b4"
  ],
  "author": {
    "name": "Alexandr Miloslavskiy",
    "email": "alexandr.miloslavskiy@syntevo.com",
    "time": "Tue Mar 10 13:11:22 2020 +0000"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Tue Mar 10 11:41:40 2020 -0700"
  },
  "message": "real_path: remove unsafe API\n\nReturning a shared buffer invites very subtle bugs due to reentrancy or\nmulti-threading, as demonstrated by the previous patch.\n\nThere was an unfinished effort to abolish this [1].\n\nLet\u0027s finally rid of `real_path()`, using `strbuf_realpath()` instead.\n\nThis patch uses a local `strbuf` for most places where `real_path()` was\npreviously called.\n\nHowever, two places return the value of `real_path()` to the caller. For\nthem, a `static` local `strbuf` was added, effectively pushing the\nproblem one level higher:\n    read_gitfile_gently()\n    get_superproject_working_tree()\n\n[1] https://lore.kernel.org/git/1480964316-99305-1-git-send-email-bmwill@google.com/\n\nSigned-off-by: Alexandr Miloslavskiy \u003calexandr.miloslavskiy@syntevo.com\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "98579853299427ff906434fe56288a73b9d19b21",
      "old_mode": 33188,
      "old_path": "abspath.c",
      "new_id": "d34026bfeb85b59e7f70d23b4913c7b86d288403",
      "new_mode": 33188,
      "new_path": "abspath.c"
    },
    {
      "type": "modify",
      "old_id": "1ad26f4d8c81b3e26bca8c3701162ab0e8120e87",
      "old_mode": 33188,
      "old_path": "builtin/clone.c",
      "new_id": "488bdb074172d037d0f4332efd098408480efc93",
      "new_mode": 33188,
      "new_path": "builtin/clone.c"
    },
    {
      "type": "modify",
      "old_id": "4a70b33fb5f1359397742fcf8601c4c1d49109fe",
      "old_mode": 33188,
      "old_path": "builtin/commit-graph.c",
      "new_id": "d1ab6625f632031787584e3fa792015a137ba8bd",
      "new_mode": 33188,
      "new_path": "builtin/commit-graph.c"
    },
    {
      "type": "modify",
      "old_id": "7a00da820355b61c548449c55381577a2232a0e8",
      "old_mode": 33188,
      "old_path": "builtin/rev-parse.c",
      "new_id": "06ca7175ac78879eab64ed24b22b12aeb87c10f8",
      "new_mode": 33188,
      "new_path": "builtin/rev-parse.c"
    },
    {
      "type": "modify",
      "old_id": "24f22800f38c759d123d7e307de488f0c8ee852f",
      "old_mode": 33188,
      "old_path": "builtin/worktree.c",
      "new_id": "d99db356684fab9c1f2c53790a95bb2e2723c541",
      "new_mode": 33188,
      "new_path": "builtin/worktree.c"
    },
    {
      "type": "modify",
      "old_id": "8cee257d3d73a5d2ac58a5a4f8f051bd505c0398",
      "old_mode": 33188,
      "old_path": "cache.h",
      "new_id": "f6937793ec2fdea7f99261bfbf62e42fb789fc93",
      "new_mode": 33188,
      "new_path": "cache.h"
    },
    {
      "type": "modify",
      "old_id": "f079abbf1102686fdb8e64258f456877f976dd03",
      "old_mode": 33188,
      "old_path": "editor.c",
      "new_id": "91989ee8a116aa44502a2c60dfbd02ba4528a34f",
      "new_mode": 33188,
      "new_path": "editor.c"
    },
    {
      "type": "modify",
      "old_id": "c436de31eef12946ee3223c06a4490df9c9dd49d",
      "old_mode": 33188,
      "old_path": "environment.c",
      "new_id": "10c9061c432cf9d82e0fbd14fed7c4a9a304c447",
      "new_mode": 33188,
      "new_path": "environment.c"
    },
    {
      "type": "modify",
      "old_id": "c5a8fe4f0c3c1273f6e6489077098d349fa101f3",
      "old_mode": 33188,
      "old_path": "path.c",
      "new_id": "0a42ceb3fb54d31e1830f73b67da078d4b625645",
      "new_mode": 33188,
      "new_path": "path.c"
    },
    {
      "type": "modify",
      "old_id": "fa4317e707a0ebf6629042cecee7a87a56e266dd",
      "old_mode": 33188,
      "old_path": "setup.c",
      "new_id": "1ae3f20301633d0b73c386c2de7e099ad09923e0",
      "new_mode": 33188,
      "new_path": "setup.c"
    },
    {
      "type": "modify",
      "old_id": "31f391d7d2541c1498387248e669248de3430b5d",
      "old_mode": 33188,
      "old_path": "submodule.c",
      "new_id": "bad7a788c06da07da5380dc82254f92a45a978df",
      "new_mode": 33188,
      "new_path": "submodule.c"
    },
    {
      "type": "modify",
      "old_id": "409034cf4eef59363653b39cf3aae3fc37c07856",
      "old_mode": 33188,
      "old_path": "t/helper/test-path-utils.c",
      "new_id": "313a153209c48f9001f122fa61f6c42c39ac02f8",
      "new_mode": 33188,
      "new_path": "t/helper/test-path-utils.c"
    },
    {
      "type": "modify",
      "old_id": "eba4fd3a03812f046dadc1baf9d7644ba8dfcce9",
      "old_mode": 33188,
      "old_path": "worktree.c",
      "new_id": "e7bbf716f6bdc6bef43a8ce4ee9e15031d6ef158",
      "new_mode": 33188,
      "new_path": "worktree.c"
    }
  ]
}
