)]}'
{
  "commit": "e40a9e2c9ed0723088e0fb65deb9b430fc91c367",
  "tree": "e129c5cad763d28285e53abc5fd59bb9e858ee54",
  "parents": [
    "1ed4813f7d018eb35187209d43b98746a2e69542"
  ],
  "author": {
    "name": "Junio C Hamano",
    "email": "junkio@cox.net",
    "time": "Fri Dec 29 02:35:40 2006 -0800"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "junkio@cox.net",
    "time": "Fri Dec 29 11:37:01 2006 -0800"
  },
  "message": "send-pack: fix pipeline.\n\nsend-pack builds a pipeline that runs \"rev-list | pack-objects\"\nand sends the output from pack-objects to the other side, while\nfeeding the input side of that pipe from itself.  However, the\nfile descriptor that is given to this pipeline (so that it can\nbe dup2(2)\u0027ed into file descriptor 1 of pack-objects) is closed\nby the caller before the complex fork+exec dance!  Worse yet,\nthe caller already dup2\u0027s it to 1, so the child process did not\neven have to.\n\nI do not understand how this code could possibly have been\nworking, but it somehow was working by accident.\n\nMerging the sliding mmap() code reveals this problem, presumably\nbecause it keeps one extra file descriptor open for a packfile\nand changes the way file descriptors are allocated.  I am too\ntired to diagnose the problem now, but this seems to be a\nsensible fix.\n\nSigned-off-by: Junio C Hamano \u003cjunkio@cox.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "cc884f3b2debbaadfc3c42cda20074257fa48a65",
      "old_mode": 33188,
      "old_path": "send-pack.c",
      "new_id": "54de96e40c36428373b21f3dec4939cef767a900",
      "new_mode": 33188,
      "new_path": "send-pack.c"
    }
  ]
}
