)]}'
{
  "commit": "74e8bc59cb324d2d7a55c90195db004219770eec",
  "tree": "1ad1ba823e9be15691af9d23e22e3d6ce5839b73",
  "parents": [
    "770380156dd06cd03d83957d55484f4a98ad284f"
  ],
  "author": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Sat Apr 25 18:47:21 2015 -0700"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Wed Apr 29 13:27:31 2015 -0700"
  },
  "message": "merge: handle FETCH_HEAD internally\n\nThe collect_parents() function now is responsible for\n\n 1. parsing the commits given on the command line into a list of\n    commits to be merged;\n\n 2. filtering these parents into independent ones; and\n\n 3. optionally calling fmt_merge_msg() via prepare_merge_message()\n    to prepare an auto-generated merge log message, using fake\n    contents that FETCH_HEAD would have had if these commits were\n    fetched from the current repository with \"git pull . $args...\"\n\nMake \"git merge FETCH_HEAD\" to be the same as the traditional\n\n    git merge \"$(git fmt-merge-msg \u003c.git/FETCH_HEAD)\" $commits\n\ninvocation of the command in \"git pull\", where $commits are the ones\nthat appear in FETCH_HEAD that are not marked as not-for-merge, by\nmaking it do a bit more, specifically:\n\n - noticing \"FETCH_HEAD\" is the only \"commit\" on the command line\n   and picking the commits that are not marked as not-for-merge as\n   the list of commits to be merged (substitute for step #1 above);\n\n - letting the resulting list fed to step #2 above;\n\n - doing the step #3 above, using the contents of the FETCH_HEAD\n   instead of fake contents crafted from the list of commits parsed\n   in the step #1 above.\n\nNote that this changes the semantics.  \"git merge FETCH_HEAD\" has\nalways behaved as if the first commit in the FETCH_HEAD file were\ndirectly specified on the command line, creating a two-way merge\nwhose auto-generated merge log said \"merge commit xyz\".  With this\nchange, if the previous fetch was to grab multiple branches (e.g.\n\"git fetch $there topic-a topic-b\"), the new world order is to\ncreate an octopus, behaving as if \"git pull $there topic-a topic-b\"\nwere run.  This is a deliberate change to make that happen, and\ncan be seen in the changes to t3033 tests.\n\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "cf2c374b710673e891f8337cb9bcc90d72be460a",
      "old_mode": 33188,
      "old_path": "Documentation/git-merge.txt",
      "new_id": "d9aa6b6f118b10604f2579af3f987dfe8e4e8184",
      "new_mode": 33188,
      "new_path": "Documentation/git-merge.txt"
    },
    {
      "type": "modify",
      "old_id": "eb3be6817efa24584deaae333130971173577ce2",
      "old_mode": 33188,
      "old_path": "builtin/merge.c",
      "new_id": "42f9fcc1745c05f13d685981b14a9ac22f82dc77",
      "new_mode": 33188,
      "new_path": "builtin/merge.c"
    },
    {
      "type": "modify",
      "old_id": "9d92d3c1a27d08f15ffa2510b5017e32aecfce94",
      "old_mode": 33261,
      "old_path": "t/t3033-merge-toplevel.sh",
      "new_id": "46aadc410bc470d9279ed1fd3ee72583d0963d30",
      "new_mode": 33261,
      "new_path": "t/t3033-merge-toplevel.sh"
    }
  ]
}
