Subject: [PATCH 00/18] rebase -i: For pure fixups, do not start log message editor

From: Michael Haggerty <[email-masked]>
Date: Thu, 14 Jan 2010 06:54:39 +0100

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
    conflicts

 git-rebase--interactive.sh    |  224 ++++++++++++++++++++++++++---------------
 t/lib-rebase.sh               |    6 +-
 t/t3404-rebase-interactive.sh |  101 +++++++++++++------
 3 files changed, 219 insertions(+), 112 deletions(-)