)]}'
{
  "commit": "3ba2e8653c88d220b0b22f35260477bb0afa7d7b",
  "tree": "3a4b5420ae9e41af1f6d0e20e93bd83d225da3e1",
  "parents": [
    "23a32ffe803237b64651cbd104585d04b8fe33d6"
  ],
  "author": {
    "name": "Johannes Sixt",
    "email": "j6t@kdbg.org",
    "time": "Wed Mar 16 09:18:49 2011 +0100"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Thu Mar 17 14:54:11 2011 -0700"
  },
  "message": "stash: copy the index using --index-output instead of cp -p\n\n\u0027git stash create\u0027 must operate with a temporary index. For this purpose,\nit used \u0027cp -p\u0027 to create a copy. -p is needed to preserve the timestamp\nof the index file. Now Jakob Pfender reported a certain combination of\na Linux NFS client, OpenBSD NFS server, and cp implementation where this\noperation failed.\n\nLuckily, the first operation in git-stash after copying the index is to\ncall \u0027git read-tree\u0027. Therefore, use --index-output instead of \u0027cp -p\u0027\nto write the copy of the index.\n\n--index-output requires that the specified file is on the same volume as\nthe source index, so that the lock file can be rename()d. For this reason,\nthe name of the temporary index is constructed in a way different from the\nother temporary files. The code path of \u0027stash -p\u0027 also needs a temporary\nindex, but we do not use the new name because it does not depend on the\nsame precondition as --index-output.\n\nSigned-off-by: Johannes Sixt \u003cj6t@kdbg.org\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7c0d563c633bb1ace8536585797da2f93759f1e9",
      "old_mode": 33261,
      "old_path": "git-stash.sh",
      "new_id": "513022890936ab422791503a03128eeead9d88c6",
      "new_mode": 33261,
      "new_path": "git-stash.sh"
    }
  ]
}
