OSDN Git Service

Merge branch 'jk/rebase-i-squash-count-fix'
[git-core/git.git] / git-rebase--interactive.sh
index c580685..4734094 100644 (file)
@@ -93,8 +93,17 @@ eval '
 GIT_CHERRY_PICK_HELP="$resolvemsg"
 export GIT_CHERRY_PICK_HELP
 
-comment_char=$(git config --get core.commentchar 2>/dev/null | cut -c1)
-: ${comment_char:=#}
+comment_char=$(git config --get core.commentchar 2>/dev/null)
+case "$comment_char" in
+'' | auto)
+       comment_char="#"
+       ;;
+?)
+       ;;
+*)
+       comment_char=$(echo "$comment_char" | cut -c1)
+       ;;
+esac
 
 warn () {
        printf '%s\n' "$*" >&2
@@ -121,7 +130,7 @@ mark_action_done () {
        sed -e 1q < "$todo" >> "$done"
        sed -e 1d < "$todo" >> "$todo".new
        mv -f "$todo".new "$todo"
-       new_count=$(git stripspace --strip-comments <"$done" | wc -l)
+       new_count=$(( $(git stripspace --strip-comments <"$done" | wc -l) ))
        echo $new_count >"$msgnum"
        total=$(($new_count + $(git stripspace --strip-comments <"$todo" | wc -l)))
        echo $total >"$end"
@@ -191,7 +200,6 @@ make_patch () {
 die_with_patch () {
        echo "$1" > "$state_dir"/stopped-sha
        make_patch "$1"
-       git rerere
        die "$2"
 }
 
@@ -213,6 +221,7 @@ Once you are satisfied with your changes, run
 }
 
 die_abort () {
+       apply_autostash
        rm -rf "$state_dir"
        die "$1"
 }
@@ -404,58 +413,19 @@ pick_one_preserving_merges () {
 
 this_nth_commit_message () {
        n=$1
-       case "$n" in
-       1) gettext "This is the 1st commit message:";;
-       2) gettext "This is the 2nd commit message:";;
-       3) gettext "This is the 3rd commit message:";;
-       4) gettext "This is the 4th commit message:";;
-       5) gettext "This is the 5th commit message:";;
-       6) gettext "This is the 6th commit message:";;
-       7) gettext "This is the 7th commit message:";;
-       8) gettext "This is the 8th commit message:";;
-       9) gettext "This is the 9th commit message:";;
-       10) gettext "This is the 10th commit message:";;
-       # TRANSLATORS: if the language you are translating into
-       # doesn't allow you to compose a sentence in this fashion,
-       # consider translating as if this and the following few strings
-       # were "This is the commit message ${n}:"
-       *1[0-9]|*[04-9]) eval_gettext "This is the \${n}th commit message:";;
-       *1) eval_gettext "This is the \${n}st commit message:";;
-       *2) eval_gettext "This is the \${n}nd commit message:";;
-       *3) eval_gettext "This is the \${n}rd commit message:";;
-       *) eval_gettext "This is the commit message \${n}:";;
-       esac
+       eval_gettext "This is the commit message #\${n}:"
 }
+
 skip_nth_commit_message () {
        n=$1
-       case "$n" in
-       1) gettext "The 1st commit message will be skipped:";;
-       2) gettext "The 2nd commit message will be skipped:";;
-       3) gettext "The 3rd commit message will be skipped:";;
-       4) gettext "The 4th commit message will be skipped:";;
-       5) gettext "The 5th commit message will be skipped:";;
-       6) gettext "The 6th commit message will be skipped:";;
-       7) gettext "The 7th commit message will be skipped:";;
-       8) gettext "The 8th commit message will be skipped:";;
-       9) gettext "The 9th commit message will be skipped:";;
-       10) gettext "The 10th commit message will be skipped:";;
-       # TRANSLATORS: if the language you are translating into
-       # doesn't allow you to compose a sentence in this fashion,
-       # consider translating as if this and the following few strings
-       # were "The commit message ${n} will be skipped:"
-       *1[0-9]|*[04-9]) eval_gettext "The \${n}th commit message will be skipped:";;
-       *1) eval_gettext "The \${n}st commit message will be skipped:";;
-       *2) eval_gettext "The \${n}nd commit message will be skipped:";;
-       *3) eval_gettext "The \${n}rd commit message will be skipped:";;
-       *) eval_gettext "The commit message \${n} will be skipped:";;
-       esac
+       eval_gettext "The commit message #\${n} will be skipped:"
 }
 
 update_squash_messages () {
        if test -f "$squash_msg"; then
                mv "$squash_msg" "$squash_msg".bak || exit
                count=$(($(sed -n \
-                       -e "1s/^$comment_char.*\([0-9][0-9]*\).*/\1/p" \
+                       -e "1s/^$comment_char[^0-9]*\([0-9][0-9]*\).*/\1/p" \
                        -e "q" < "$squash_msg".bak)+1))
                {
                        printf '%s\n' "$comment_char $(eval_ngettext \
@@ -1081,7 +1051,7 @@ The possible behaviours are: ignore, warn, error.")"
                # placed before the commit of the next action
                checkout_onto
 
-               warn "$(gettext "You can fix this with 'git rebase --edit-todo'.")"
+               warn "$(gettext "You can fix this with 'git rebase --edit-todo' and then run 'git rebase --continue'.")"
                die "$(gettext "Or you can abort the rebase with 'git rebase --abort'.")"
        fi
 }
@@ -1091,8 +1061,8 @@ The possible behaviours are: ignore, warn, error.")"
 # below were not inside any function, and expected to return
 # to the function that dot-sourced us.
 #
-# However, FreeBSD /bin/sh misbehaves on such a construct and
-# continues to run the statements that follow such a "return".
+# However, older (9.x) versions of FreeBSD /bin/sh misbehave on such a
+# construct and continue to run the statements that follow such a "return".
 # As a work-around, we introduce an extra layer of a function
 # here, and immediately call it after defining it.
 git_rebase__interactive () {
@@ -1122,7 +1092,7 @@ If they are meant to go into a new commit, run:
 
   git commit \$gpg_sign_opt_quoted
 
-In both case, once you're done, continue with:
+In both cases, once you're done, continue with:
 
   git rebase --continue
 ")"
@@ -1181,9 +1151,6 @@ To continue rebase after editing, run:
        ;;
 esac
 
-git var GIT_COMMITTER_IDENT >/dev/null ||
-       die "$(gettext "You need to set your committer info first")"
-
 comment_for_reflog start
 
 if test ! -z "$switch_to"