rebase -i: Simplify commit counting for generated commit messages

Read the old count from the first line of the old commit message
rather than counting the number of commit message blocks in the file.
This is simpler, faster, and more robust (e.g., it cannot be confused
by strange commit message contents).

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Michael Haggerty 2010-01-14 06:54:50 +01:00 committed by Junio C Hamano
parent 5065ed296a
commit f99e269c44

View File

@ -349,11 +349,9 @@ nth_string () {
make_squash_message () { make_squash_message () {
if test -f "$SQUASH_MSG"; then if test -f "$SQUASH_MSG"; then
# We want to be careful about matching only the commit COUNT=$(($(sed -n \
# message comment lines generated by this function. -e "1s/^# This is a combination of \(.*\) commits\./\1/p" \
# "[snrt][tdh]" matches the nth_string endings. -e "q" < "$SQUASH_MSG")+1))
COUNT=$(($(sed -n "s/^# Th[^0-9]*\([1-9][0-9]*\)[snrt][tdh] commit message.*:/\1/p" \
< "$SQUASH_MSG" | sed -ne '$p')+1))
echo "# This is a combination of $COUNT commits." echo "# This is a combination of $COUNT commits."
sed -e 1d -e '2,/^./{ sed -e 1d -e '2,/^./{
/^$/d /^$/d
@ -376,9 +374,6 @@ make_squash_message () {
echo echo
echo "# The $(nth_string $COUNT) commit message will be skipped:" echo "# The $(nth_string $COUNT) commit message will be skipped:"
echo echo
# Comment the lines of the commit message out using
# "# " rather than "# " to make them less likely to
# confuse the sed regexp above.
git cat-file commit $2 | sed -e '1,/^$/d' -e 's/^/# /' git cat-file commit $2 | sed -e '1,/^$/d' -e 's/^/# /'
;; ;;
esac esac