Code

rebase -i: Simplify commit counting for generated commit messages
authorMichael Haggerty <mhagger@alum.mit.edu>
Thu, 14 Jan 2010 05:54:50 +0000 (06:54 +0100)
committerJunio C Hamano <gitster@pobox.com>
Thu, 14 Jan 2010 08:27:56 +0000 (00:27 -0800)
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>
git-rebase--interactive.sh

index 702c979414033a685973c126042631c4469c3454..d60e059838c3e50e4cdc9ef246d9a45b16c5c7ef 100755 (executable)
@@ -349,11 +349,9 @@ nth_string () {
 
 make_squash_message () {
        if test -f "$SQUASH_MSG"; then
-               # We want to be careful about matching only the commit
-               # message comment lines generated by this function.
-               # "[snrt][tdh]" matches the nth_string endings.
-               COUNT=$(($(sed -n "s/^# Th[^0-9]*\([1-9][0-9]*\)[snrt][tdh] commit message.*:/\1/p" \
-                       < "$SQUASH_MSG" | sed -ne '$p')+1))
+               COUNT=$(($(sed -n \
+                       -e "1s/^# This is a combination of \(.*\) commits\./\1/p" \
+                       -e "q" < "$SQUASH_MSG")+1))
                echo "# This is a combination of $COUNT commits."
                sed -e 1d -e '2,/^./{
                        /^$/d
@@ -376,9 +374,6 @@ make_squash_message () {
                echo
                echo "# The $(nth_string $COUNT) commit message will be skipped:"
                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/^/#     /'
                ;;
        esac