)]}'
{
  "commit": "9055e401dd63a422a4401a454ef2a0e2ef727ace",
  "tree": "b94bbe6866673e8b8dcdce91e5a088de5e8db68f",
  "parents": [
    "f431d73d9c9a4ee16df2f7ef66abe518c77c73d6"
  ],
  "author": {
    "name": "Johannes Schindelin",
    "email": "johannes.schindelin@gmx.de",
    "time": "Wed Apr 25 14:28:47 2018 +0200"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Thu Apr 26 12:28:42 2018 +0900"
  },
  "message": "sequencer: introduce new commands to reset the revision\n\nIn the upcoming commits, we will teach the sequencer to rebase merges.\nThis will be done in a very different way from the unfortunate design of\n`git rebase --preserve-merges` (which does not allow for reordering\ncommits, or changing the branch topology).\n\nThe main idea is to introduce new todo list commands, to support\nlabeling the current revision with a given name, resetting the current\nrevision to a previous state, and  merging labeled revisions.\n\nThis idea was developed in Git for Windows\u0027 Git garden shears (that are\nused to maintain Git for Windows\u0027 \"thicket of branches\" on top of\nupstream Git), and this patch is part of the effort to make it available\nto a wider audience, as well as to make the entire process more robust\n(by implementing it in a safe and portable language rather than a Unix\nshell script).\n\nThis commit implements the commands to label, and to reset to, given\nrevisions. The syntax is:\n\n\tlabel \u003cname\u003e\n\treset \u003cname\u003e\n\nInternally, the `label \u003cname\u003e` command creates the ref\n`refs/rewritten/\u003cname\u003e`. This makes it possible to work with the labeled\nrevisions interactively, or in a scripted fashion (e.g. via the todo\nlist command `exec`).\n\nThese temporary refs are removed upon sequencer_remove_state(), so that\neven a `git rebase --abort` cleans them up.\n\nWe disallow \u0027#\u0027 as label because that character will be used as separator\nin the upcoming `merge` command.\n\nLater in this patch series, we will mark the `refs/rewritten/` refs as\nworktree-local, to allow for interactive rebases to be run in parallel in\nworktrees linked to the same repository.\n\nAs typos happen, a failed `label` or `reset` command will be rescheduled\nimmediately. As the previous code to reschedule a command is embedded\ndeeply in the pick/fixup/squash code path, we simply duplicate the few\nlines. This will allow us to extend the new code path easily for the\nupcoming `merge` command.\n\nSigned-off-by: Johannes Schindelin \u003cjohannes.schindelin@gmx.de\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a60df2ee5a0806477872fbe4db700e80cfb5f43d",
      "old_mode": 33188,
      "old_path": "git-rebase--interactive.sh",
      "new_id": "d6e8958dae4ae457d0aac7dd084d6bf975b075c5",
      "new_mode": 33188,
      "new_path": "git-rebase--interactive.sh"
    },
    {
      "type": "modify",
      "old_id": "f9c1ddb53857164dbb85491148ef462eb2424573",
      "old_mode": 33188,
      "old_path": "sequencer.c",
      "new_id": "c9655edffa5b227f7228956d351e89be4f9d2612",
      "new_mode": 33188,
      "new_path": "sequencer.c"
    }
  ]
}
