rebase -i: handle fixup! fixup! in --autosquash
commit22c5b136363c7aa427667876e787db832548a038
authorAndrew Pimlott <andrew@pimlott.net>
Thu, 27 Jun 2013 19:26:31 +0000 (27 12:26 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 27 Jun 2013 20:52:41 +0000 (27 13:52 -0700)
tree9c65417aa9e672f8feb61ce00a8edbb6b7bcddc2
parent9832cb9d4dc969fbfacfd1f8940fcbdec18bb930
rebase -i: handle fixup! fixup! in --autosquash

In rebase -i --autosquash, ignore all "fixup! " or "squash! " after the
first.  This supports the case when a git commit --fixup/--squash referred
to an earlier fixup/squash instead of the original commit (whether
intentionally, as when the user expressly meant to note that the commit
fixes an earlier fixup; or inadvertently, as when the user meant to refer to
the original commit with :/msg; or out of laziness, as when the user could
remember how to refer to the fixup but not the original).

In the todo list, the full commit message is preserved, in case it provides
useful cues to the user.  A test helper set_cat_todo_editor is introduced to
check this.

Helped-by: Thomas Rast <trast@inf.ethz.ch>
Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Andrew Pimlott <andrew@pimlott.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-rebase.txt
git-rebase--interactive.sh
t/lib-rebase.sh
t/t3415-rebase-autosquash.sh