i18n: fix git rebase interactive commit messages
[gitweb.git] / git-rebase--interactive.sh
index 44ba3d30e271fe92a5a749612c722a8cbc5618c0..7e558b068c277c2f079de04eb96161c529e11337 100644 (file)
@@ -144,29 +144,28 @@ reschedule_last_action () {
 }
 
 append_todo_help () {
-       git stripspace --comment-lines >>"$todo" <<\EOF
-
+       gettext "
 Commands:
  p, pick = use commit
  r, reword = use commit, but edit the commit message
  e, edit = use commit, but stop for amending
  s, squash = use commit, but meld into previous commit
- f, fixup = like "squash", but discard this commit's log message
+ f, fixup = like \"squash\", but discard this commit's log message
  x, exec = run command (the rest of the line) using shell
  d, drop = remove commit
 
 These lines can be re-ordered; they are executed from top to bottom.
+" | git stripspace --comment-lines >>"$todo"
 
-EOF
        if test $(get_missing_commit_check_level) = error
        then
-               git stripspace --comment-lines >>"$todo" <<\EOF
+               gettext "
 Do not remove any line. Use 'drop' explicitly to remove a commit.
-EOF
+" | git stripspace --comment-lines >>"$todo"
        else
-               git stripspace --comment-lines >>"$todo" <<\EOF
+               gettext "
 If you remove a line here THAT COMMIT WILL BE LOST.
-EOF
+" | git stripspace --comment-lines >>"$todo"
        fi
 }
 
@@ -192,7 +191,6 @@ make_patch () {
 die_with_patch () {
        echo "$1" > "$state_dir"/stopped-sha
        make_patch "$1"
-       git rerere
        die "$2"
 }
 
@@ -214,6 +212,7 @@ Once you are satisfied with your changes, run
 }
 
 die_abort () {
+       apply_autostash
        rm -rf "$state_dir"
        die "$1"
 }
@@ -403,33 +402,37 @@ pick_one_preserving_merges () {
        esac
 }
 
-nth_string () {
-       case "$1" in
-       *1[0-9]|*[04-9]) echo "$1"th;;
-       *1) echo "$1"st;;
-       *2) echo "$1"nd;;
-       *3) echo "$1"rd;;
-       esac
+this_nth_commit_message () {
+       n=$1
+       eval_gettext "This is the commit message #\${n}:"
+}
+
+skip_nth_commit_message () {
+       n=$1
+       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/^. This is a combination of \(.*\) commits\./\1/p" \
+                       -e "1s/^$comment_char.*\([0-9][0-9]*\).*/\1/p" \
                        -e "q" < "$squash_msg".bak)+1))
                {
-                       printf '%s\n' "$comment_char This is a combination of $count commits."
+                       printf '%s\n' "$comment_char $(eval_ngettext \
+                               "This is a combination of \$count commit." \
+                               "This is a combination of \$count commits." \
+                               $count)"
                        sed -e 1d -e '2,/^./{
                                /^$/d
                        }' <"$squash_msg".bak
                } >"$squash_msg"
        else
-               commit_message HEAD > "$fixup_msg" || die "Cannot write $fixup_msg"
+               commit_message HEAD > "$fixup_msg" || die "$(gettext "Cannot write \$fixup_msg")"
                count=2
                {
-                       printf '%s\n' "$comment_char This is a combination of 2 commits."
-                       printf '%s\n' "$comment_char The first commit's message is:"
+                       printf '%s\n' "$comment_char $(gettext "This is a combination of 2 commits.")"
+                       printf '%s\n' "$comment_char $(gettext "This is the 1st commit message:")"
                        echo
                        cat "$fixup_msg"
                } >"$squash_msg"
@@ -438,13 +441,13 @@ update_squash_messages () {
        squash)
                rm -f "$fixup_msg"
                echo
-               printf '%s\n' "$comment_char This is the $(nth_string $count) commit message:"
+               printf '%s\n' "$comment_char $(this_nth_commit_message $count)"
                echo
                commit_message $2
                ;;
        fixup)
                echo
-               printf '%s\n' "$comment_char The $(nth_string $count) commit message will be skipped:"
+               printf '%s\n' "$comment_char $(skip_nth_commit_message $count)"
                echo
                # Change the space after the comment character to TAB:
                commit_message $2 | git stripspace --comment-lines | sed -e 's/ /       /'
@@ -1048,8 +1051,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 () {
@@ -1123,13 +1126,12 @@ edit-todo)
        mv -f "$todo".new "$todo"
        collapse_todo_ids
        append_todo_help
-       git stripspace --comment-lines >>"$todo" <<\EOF
-
+       gettext "
 You are editing the todo file of an ongoing interactive rebase.
 To continue rebase after editing, run:
     git rebase --continue
 
-EOF
+" | git stripspace --comment-lines >>"$todo"
 
        git_sequence_editor "$todo" ||
                die "$(gettext "Could not execute editor")"
@@ -1270,14 +1272,16 @@ todocount=${todocount##* }
 
 cat >>"$todo" <<EOF
 
-$comment_char Rebase $shortrevisions onto $shortonto ($todocount command(s))
+$comment_char $(eval_ngettext \
+       "Rebase \$shortrevisions onto \$shortonto (\$todocount command)" \
+       "Rebase \$shortrevisions onto \$shortonto (\$todocount commands)" \
+       "$todocount")
 EOF
 append_todo_help
-git stripspace --comment-lines >>"$todo" <<\EOF
-
+gettext "
 However, if you remove everything, the rebase will be aborted.
 
-EOF
+" | git stripspace --comment-lines >>"$todo"
 
 if test -z "$keep_empty"
 then