[PATCH 00/18] rebase -i: For pure fixups, do not start log message editor
- From
Michael Haggerty <mhagger@alum.mit.edu>
- Date
- Jan 14, 2010, 05:54 UTC
- Message-ID
- <cover.1263447037.git.mhagger@alum.mit.edu>
This patch series is a successor to mh/rebase-fixup, which causes "rebase -i" to skip opening the log message editor when processing a block of "fixup" commands that does not include any "squash"es. The idea was discussed on the mailing list [1] to general approval.
This patch series applies to "next", as it depends on earlier commits in mh/rebase-fixup. With this patch series, I believe that this topic is finished.
The first several commits are trivial fixups.
The three commits starting with "Document how temporary files are used" attempt to document how the existing git-rebase--interactive.sh script uses temporary files, as that information was not obvious. I would appreciate feedback about whether I have inferred the uses correctly.
Following are several refactorings leading to the main point of this patch series, "For fixup commands without squashes, do not start editor".
I also noticed a related (pre-existing) bug, namely that when there is a conflict during the processing of a "squash" series, the user is sometimes asked to edit an intermediate commit message. But after later squashes are processed, the user's edited message is discarded. The last two patches fix this problem--whenever the user has edited a commit message, the resulting combined commit is treated (internally) as a new starting point for further squash/fixups. As such, the user-edited commit message is the first part of the suggested commit message for the final squashed/fixedup commit.
Michael
[1] http://article.gmane.org/gmane.comp.version-control.git/134510
Michael Haggerty (18):
rebase -i: Make the condition for an "if" more transparent
rebase -i: Remove dead code
rebase -i: Inline expression
rebase -i: Use "test -n" instead of "test ! -z"
rebase -i: Use symbolic constant $MSG consistently
rebase -i: Document how temporary files are used
rebase -i: Introduce a constant AUTHOR_SCRIPT
rebase -i: Introduce a constant AMEND
t3404: Test the commit count in commit messages generated by "rebase
-i"
rebase -i: Improve consistency of commit count in generated commit
messages
rebase -i: Simplify commit counting for generated commit messages
rebase -i: Extract a function "commit_message"
rebase -i: Handle the author script all in one place in do_next
rebase -i: Extract function do_with_author
rebase -i: Change function make_squash_message into
update_squash_message
rebase -i: For fixup commands without squashes, do not start editor
t3404: Set up more of the test repo in the "setup" step
rebase -i: Retain user-edited commit messages after squash/fixup
conflictsgit-rebase--interactive.sh | 224 ++++++++++++++++++++++++++--------------- t/lib-rebase.sh | 6 +- t/t3404-rebase-interactive.sh | 101 +++++++++++++------ 3 files changed, 219 insertions(+), 112 deletions(-)