)]}'
{
  "commit": "ba3c69a9ee1894de397b60d3b548383e13ef49e3",
  "tree": "a0d13cdc7e85835f529afce77e53a67b3ef42a84",
  "parents": [
    "96b8d93a539f3a9f43f0fc38214db8753cac3c2e"
  ],
  "author": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Wed Oct 05 17:23:20 2011 -0700"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Sat Nov 12 22:27:37 2011 -0800"
  },
  "message": "commit: teach --gpg-sign option\n\nThis uses the gpg-interface.[ch] to allow signing the commit, i.e.\n\n    $ git commit --gpg-sign -m foo\n    You need a passphrase to unlock the secret key for\n    user: \"Junio C Hamano \u003cgitster@pobox.com\u003e\"\n    4096-bit RSA key, ID 96AFE6CB, created 2011-10-03 (main key ID 713660A7)\n\n    [master 8457d13] foo\n     1 files changed, 1 insertions(+), 0 deletions(-)\n\nThe lines of GPG detached signature are placed in a new multi-line header\nfield, instead of tucking the signature block at the end of the commit log\nmessage text (similar to how signed tag is done), for multiple reasons:\n\n - The signature won\u0027t clutter output from \"git log\" and friends if it is\n   in the extra header. If we place it at the end of the log message, we\n   would need to teach \"git log\" and friends to strip the signature block\n   with an option.\n\n - Teaching new versions of \"git log\" and \"gitk\" to optionally verify and\n   show signatures is cleaner if we structurally know where the signature\n   block is (instead of scanning in the commit log message).\n\n - The signature needs to be stripped upon various commit rewriting\n   operations, e.g. rebase, filter-branch, etc. They all already ignore\n   unknown headers, but if we place signature in the log message, all of\n   these tools (and third-party tools) also need to learn how a signature\n   block would look like.\n\n - When we added the optional encoding header, all the tools (both in tree\n   and third-party) that acts on the raw commit object should have been\n   fixed to ignore headers they do not understand, so it is not like that\n   new header would be more likely to break than extra text in the commit.\n\nA commit made with the above sample sequence would look like this:\n\n    $ git cat-file commit HEAD\n    tree 3cd71d90e3db4136e5260ab54599791c4f883b9d\n    parent b87755351a47b09cb27d6913e6e0e17e6254a4d4\n    author Junio C Hamano \u003cgitster@pobox.com\u003e 1317862251 -0700\n    committer Junio C Hamano \u003cgitster@pobox.com\u003e 1317862251 -0700\n    gpgsig -----BEGIN PGP SIGNATURE-----\n     Version: GnuPG v1.4.10 (GNU/Linux)\n\n     iQIcBAABAgAGBQJOjPtrAAoJELC16IaWr+bL4TMP/RSe2Y/jYnCkds9unO5JEnfG\n     ...\n     \u003ddt98\n     -----END PGP SIGNATURE-----\n\n    foo\n\nbut \"git log\" (unless you ask for it with --pretty\u003draw) output is not\ncluttered with the signature information.\n\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b9c331225f0d5c960e9e03f2c92d498f8f01f74c",
      "old_mode": 33188,
      "old_path": "builtin/commit-tree.c",
      "new_id": "d5e19af54702d5d2ab38a5e4ef2cab6c9b88eead",
      "new_mode": 33188,
      "new_path": "builtin/commit-tree.c"
    },
    {
      "type": "modify",
      "old_id": "fca7ea01f3369b6c7df0796ec4b6142472e46904",
      "old_mode": 33188,
      "old_path": "builtin/commit.c",
      "new_id": "7e8a1cf4e074053a78f2f029e8c03f17c9053bf0",
      "new_mode": 33188,
      "new_path": "builtin/commit.c"
    },
    {
      "type": "modify",
      "old_id": "99f1429b350b69055244fe77ae769ae89bea809c",
      "old_mode": 33188,
      "old_path": "builtin/merge.c",
      "new_id": "e5afe64cefba88cd435a89c9d4d87f459488853d",
      "new_mode": 33188,
      "new_path": "builtin/merge.c"
    },
    {
      "type": "modify",
      "old_id": "b78127403be65f5c26e35e53a59b91860396194a",
      "old_mode": 33188,
      "old_path": "commit.c",
      "new_id": "f00076e91f859d3efcc7cd9f80022c5ef5550f0f",
      "new_mode": 33188,
      "new_path": "commit.c"
    },
    {
      "type": "modify",
      "old_id": "3745f120994cb6876e1ccc1bfc5e07c6cc3fc5c9",
      "old_mode": 33188,
      "old_path": "commit.h",
      "new_id": "d2c3e650b18f4ec63be9c49a7c9d30f7e1eb99bb",
      "new_mode": 33188,
      "new_path": "commit.h"
    },
    {
      "type": "modify",
      "old_id": "4c8984ede1e218d3e0aaadb6d8c72bfcafddeee9",
      "old_mode": 33188,
      "old_path": "notes-cache.c",
      "new_id": "c36a960bc32a9bfa0d5da83b1f7c8cb6a315b17d",
      "new_mode": 33188,
      "new_path": "notes-cache.c"
    },
    {
      "type": "modify",
      "old_id": "e9e41993117ae03ed7c9d1f28081a42b2eee97ca",
      "old_mode": 33188,
      "old_path": "notes-merge.c",
      "new_id": "61cf18eeab6b36535c7f84e88300a91143a2bad8",
      "new_mode": 33188,
      "new_path": "notes-merge.c"
    }
  ]
}
