Merge branch 'ad/rebase-i-serie-typofix' into maint
authorJunio C Hamano <gitster@pobox.com>
Tue, 21 Nov 2017 05:05:32 +0000 (14:05 +0900)
committerJunio C Hamano <gitster@pobox.com>
Tue, 21 Nov 2017 05:05:32 +0000 (14:05 +0900)
Typofix.

* ad/rebase-i-serie-typofix:
rebase -i: fix comment typo

1  2 
git-rebase--interactive.sh
index 2563dc52daaf7acbbdba803360f94bfa5040c5b6,6b3f3bbfff1477cb207376bc563208deef1c9f65..437815669f00b5b6639d48364be1e3c21a63696b
@@@ -5,7 -5,7 +5,7 @@@
  # Copyright (c) 2006 Johannes E. Schindelin
  #
  # The original idea comes from Eric W. Biederman, in
 -# http://article.gmane.org/gmane.comp.version-control.git/22407
 +# https://public-inbox.org/git/m1odwkyuf5.fsf_-_@ebiederm.dsl.xmission.com/
  #
  # The file containing rebase commands, comments, and empty lines.
  # This file is created by "git rebase -i" then edited by the user.  As
@@@ -155,13 -155,13 +155,13 @@@ reschedule_last_action () 
  append_todo_help () {
        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
 - x, exec = run command (the rest of the line) using shell
 - d, drop = remove commit
 +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
 +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"
@@@ -281,7 -281,7 +281,7 @@@ pick_one () 
  
        test -d "$rewritten" &&
                pick_one_preserving_merges "$@" && return
 -      output eval git cherry-pick \
 +      output eval git cherry-pick $allow_rerere_autoupdate \
                        ${gpg_sign_opt:+$(git rev-parse --sq-quote "$gpg_sign_opt")} \
                        "$strategy_args" $empty_args $ff "$@"
  
@@@ -393,8 -393,7 +393,8 @@@ pick_one_preserving_merges () 
                        merge_args="--no-log --no-ff"
                        if ! do_with_author output eval \
                        'git merge ${gpg_sign_opt:+"$gpg_sign_opt"} \
 -                              $merge_args $strategy_args -m "$msg_content" $new_parents'
 +                              $allow_rerere_autoupdate $merge_args \
 +                              $strategy_args -m "$msg_content" $new_parents'
                        then
                                printf "%s\n" "$msg_content" > "$GIT_DIR"/MERGE_MSG
                                die_with_patch $sha1 "$(eval_gettext "Error redoing merge \$sha1")"
                        echo "$sha1 $(git rev-parse HEAD^0)" >> "$rewritten_list"
                        ;;
                *)
 -                      output eval git cherry-pick \
 +                      output eval git cherry-pick $allow_rerere_autoupdate \
                                ${gpg_sign_opt:+$(git rev-parse --sq-quote "$gpg_sign_opt")} \
                                "$strategy_args" "$@" ||
                                die_with_patch $sha1 "$(eval_gettext "Could not pick \$sha1")"
@@@ -714,15 -713,157 +714,15 @@@ do_rest () 
        done
  }
  
 -# skip picking commits whose parents are unchanged
 -skip_unnecessary_picks () {
 -      fd=3
 -      while read -r command rest
 -      do
 -              # fd=3 means we skip the command
 -              case "$fd,$command" in
 -              3,pick|3,p)
 -                      # pick a commit whose parent is current $onto -> skip
 -                      sha1=${rest%% *}
 -                      case "$(git rev-parse --verify --quiet "$sha1"^)" in
 -                      "$onto"*)
 -                              onto=$sha1
 -                              ;;
 -                      *)
 -                              fd=1
 -                              ;;
 -                      esac
 -                      ;;
 -              3,"$comment_char"*|3,)
 -                      # copy comments
 -                      ;;
 -              *)
 -                      fd=1
 -                      ;;
 -              esac
 -              printf '%s\n' "$command${rest:+ }$rest" >&$fd
 -      done <"$todo" >"$todo.new" 3>>"$done" &&
 -      mv -f "$todo".new "$todo" &&
 -      case "$(peek_next_command)" in
 -      squash|s|fixup|f)
 -              record_in_rewritten "$onto"
 -              ;;
 -      esac ||
 -              die "$(gettext "Could not skip unnecessary pick commands")"
 -}
 -
 -transform_todo_ids () {
 -      while read -r command rest
 -      do
 -              case "$command" in
 -              "$comment_char"* | exec)
 -                      # Be careful for oddball commands like 'exec'
 -                      # that do not have a SHA-1 at the beginning of $rest.
 -                      ;;
 -              *)
 -                      sha1=$(git rev-parse --verify --quiet "$@" ${rest%%[     ]*}) &&
 -                      rest="$sha1 ${rest#*[    ]}"
 -                      ;;
 -              esac
 -              printf '%s\n' "$command${rest:+ }$rest"
 -      done <"$todo" >"$todo.new" &&
 -      mv -f "$todo.new" "$todo"
 -}
 -
  expand_todo_ids() {
 -      transform_todo_ids
 +      git rebase--helper --expand-ids
  }
  
  collapse_todo_ids() {
 -      transform_todo_ids --short
 -}
 -
 -# Rearrange the todo list that has both "pick sha1 msg" and
 -# "pick sha1 fixup!/squash! msg" appears in it so that the latter
 -# comes immediately after the former, and change "pick" to
 -# "fixup"/"squash".
 -#
 -# Note that if the config has specified a custom instruction format
 -# each log message will be re-retrieved in order to normalize the
 -# autosquash arrangement
 -rearrange_squash () {
 -      # extract fixup!/squash! lines and resolve any referenced sha1's
 -      while read -r pick sha1 message
 -      do
 -              test -z "${format}" || message=$(git log -n 1 --format="%s" ${sha1})
 -              case "$message" in
 -              "squash! "*|"fixup! "*)
 -                      action="${message%%!*}"
 -                      rest=$message
 -                      prefix=
 -                      # skip all squash! or fixup! (but save for later)
 -                      while :
 -                      do
 -                              case "$rest" in
 -                              "squash! "*|"fixup! "*)
 -                                      prefix="$prefix${rest%%!*},"
 -                                      rest="${rest#*! }"
 -                                      ;;
 -                              *)
 -                                      break
 -                                      ;;
 -                              esac
 -                      done
 -                      printf '%s %s %s %s\n' "$sha1" "$action" "$prefix" "$rest"
 -                      # if it's a single word, try to resolve to a full sha1 and
 -                      # emit a second copy. This allows us to match on both message
 -                      # and on sha1 prefix
 -                      if test "${rest#* }" = "$rest"; then
 -                              fullsha="$(git rev-parse -q --verify "$rest" 2>/dev/null)"
 -                              if test -n "$fullsha"; then
 -                                      # prefix the action to uniquely identify this line as
 -                                      # intended for full sha1 match
 -                                      echo "$sha1 +$action $prefix $fullsha"
 -                              fi
 -                      fi
 -              esac
 -      done >"$1.sq" <"$1"
 -      test -s "$1.sq" || return
 -
 -      used=
 -      while read -r pick sha1 message
 -      do
 -              case " $used" in
 -              *" $sha1 "*) continue ;;
 -              esac
 -              printf '%s\n' "$pick $sha1 $message"
 -              test -z "${format}" || message=$(git log -n 1 --format="%s" ${sha1})
 -              used="$used$sha1 "
 -              while read -r squash action msg_prefix msg_content
 -              do
 -                      case " $used" in
 -                      *" $squash "*) continue ;;
 -                      esac
 -                      emit=0
 -                      case "$action" in
 -                      +*)
 -                              action="${action#+}"
 -                              # full sha1 prefix test
 -                              case "$msg_content" in "$sha1"*) emit=1;; esac ;;
 -                      *)
 -                              # message prefix test
 -                              case "$message" in "$msg_content"*) emit=1;; esac ;;
 -                      esac
 -                      if test $emit = 1; then
 -                              if test -n "${format}"
 -                              then
 -                                      msg_content=$(git log -n 1 --format="${format}" ${squash})
 -                              else
 -                                      msg_content="$(echo "$msg_prefix" | sed "s/,/! /g")$msg_content"
 -                              fi
 -                              printf '%s\n' "$action $squash $msg_content"
 -                              used="$used$squash "
 -                      fi
 -              done <"$1.sq"
 -      done >"$1.rearranged" <"$1"
 -      cat "$1.rearranged" >"$1"
 -      rm -f "$1.sq" "$1.rearranged"
 +      git rebase--helper --shorten-ids
  }
  
- # Add commands after a pick or after a squash/fixup serie
+ # Add commands after a pick or after a squash/fixup series
  # in the todo list.
  add_exec_commands () {
        {
        mv "$1.new" "$1"
  }
  
 -# Check if the SHA-1 passed as an argument is a
 -# correct one, if not then print $2 in "$todo".badsha
 -# $1: the SHA-1 to test
 -# $2: the line number of the input
 -# $3: the input filename
 -check_commit_sha () {
 -      badsha=0
 -      if test -z "$1"
 -      then
 -              badsha=1
 -      else
 -              sha1_verif="$(git rev-parse --verify --quiet $1^{commit})"
 -              if test -z "$sha1_verif"
 -              then
 -                      badsha=1
 -              fi
 -      fi
 -
 -      if test $badsha -ne 0
 -      then
 -              line="$(sed -n -e "${2}p" "$3")"
 -              warn "$(eval_gettext "\
 -Warning: the SHA-1 is missing or isn't a commit in the following line:
 - - \$line")"
 -              warn
 -      fi
 -
 -      return $badsha
 -}
 -
 -# prints the bad commits and bad commands
 -# from the todolist in stdin
 -check_bad_cmd_and_sha () {
 -      retval=0
 -      lineno=0
 -      while read -r command rest
 -      do
 -              lineno=$(( $lineno + 1 ))
 -              case $command in
 -              "$comment_char"*|''|noop|x|exec)
 -                      # Doesn't expect a SHA-1
 -                      ;;
 -              "$cr")
 -                      # Work around CR left by "read" (e.g. with Git for
 -                      # Windows' Bash).
 -                      ;;
 -              pick|p|drop|d|reword|r|edit|e|squash|s|fixup|f)
 -                      if ! check_commit_sha "${rest%%[        ]*}" "$lineno" "$1"
 -                      then
 -                              retval=1
 -                      fi
 -                      ;;
 -              *)
 -                      line="$(sed -n -e "${lineno}p" "$1")"
 -                      warn "$(eval_gettext "\
 -Warning: the command isn't recognized in the following line:
 - - \$line")"
 -                      warn
 -                      retval=1
 -                      ;;
 -              esac
 -      done <"$1"
 -      return $retval
 -}
 -
 -# Print the list of the SHA-1 of the commits
 -# from stdin to stdout
 -todo_list_to_sha_list () {
 -      git stripspace --strip-comments |
 -      while read -r command sha1 rest
 -      do
 -              case $command in
 -              "$comment_char"*|''|noop|x|"exec")
 -                      ;;
 -              *)
 -                      long_sha=$(git rev-list --no-walk "$sha1" 2>/dev/null)
 -                      printf "%s\n" "$long_sha"
 -                      ;;
 -              esac
 -      done
 -}
 -
 -# Use warn for each line in stdin
 -warn_lines () {
 -      while read -r line
 -      do
 -              warn " - $line"
 -      done
 -}
 -
  # Switch to the branch in $into and notify it in the reflog
  checkout_onto () {
        GIT_REFLOG_ACTION="$GIT_REFLOG_ACTION: checkout $onto_name"
@@@ -757,6 -988,74 +757,6 @@@ get_missing_commit_check_level () 
        printf '%s' "$check_level" | tr 'A-Z' 'a-z'
  }
  
 -# Check if the user dropped some commits by mistake
 -# Behaviour determined by rebase.missingCommitsCheck.
 -# Check if there is an unrecognized command or a
 -# bad SHA-1 in a command.
 -check_todo_list () {
 -      raise_error=f
 -
 -      check_level=$(get_missing_commit_check_level)
 -
 -      case "$check_level" in
 -      warn|error)
 -              # Get the SHA-1 of the commits
 -              todo_list_to_sha_list <"$todo".backup >"$todo".oldsha1
 -              todo_list_to_sha_list <"$todo" >"$todo".newsha1
 -
 -              # Sort the SHA-1 and compare them
 -              sort -u "$todo".oldsha1 >"$todo".oldsha1+
 -              mv "$todo".oldsha1+ "$todo".oldsha1
 -              sort -u "$todo".newsha1 >"$todo".newsha1+
 -              mv "$todo".newsha1+ "$todo".newsha1
 -              comm -2 -3 "$todo".oldsha1 "$todo".newsha1 >"$todo".miss
 -
 -              # Warn about missing commits
 -              if test -s "$todo".miss
 -              then
 -                      test "$check_level" = error && raise_error=t
 -
 -                      warn "$(gettext "\
 -Warning: some commits may have been dropped accidentally.
 -Dropped commits (newer to older):")"
 -
 -                      # Make the list user-friendly and display
 -                      opt="--no-walk=sorted --format=oneline --abbrev-commit --stdin"
 -                      git rev-list $opt <"$todo".miss | warn_lines
 -
 -                      warn "$(gettext "\
 -To avoid this message, use \"drop\" to explicitly remove a commit.
 -
 -Use 'git config rebase.missingCommitsCheck' to change the level of warnings.
 -The possible behaviours are: ignore, warn, error.")"
 -                      warn
 -              fi
 -              ;;
 -      ignore)
 -              ;;
 -      *)
 -              warn "$(eval_gettext "Unrecognized setting \$check_level for option rebase.missingCommitsCheck. Ignoring.")"
 -              ;;
 -      esac
 -
 -      if ! check_bad_cmd_and_sha "$todo"
 -      then
 -              raise_error=t
 -      fi
 -
 -      if test $raise_error = t
 -      then
 -              # Checkout before the first commit of the
 -              # rebase: this way git rebase --continue
 -              # will work correctly as it expects HEAD to be
 -              # placed before the commit of the next action
 -              checkout_onto
 -
 -              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
 -}
 -
  # The whole contents of this file is run by dot-sourcing it from
  # inside a shell function.  It used to be that "return"s we see
  # below were not inside any function, and expected to return
@@@ -770,10 -1069,6 +770,10 @@@ git_rebase__interactive () 
  
  case "$action" in
  continue)
 +      if test ! -d "$rewritten"
 +      then
 +              exec git rebase--helper ${force_rebase:+--no-ff} --continue
 +      fi
        # do we have anything to commit?
        if git diff-index --cached --quiet HEAD --
        then
@@@ -833,10 -1128,6 +833,10 @@@ first and then run 'git rebase --contin
  skip)
        git rerere clear
  
 +      if test ! -d "$rewritten"
 +      then
 +              exec git rebase--helper ${force_rebase:+--no-ff} --continue
 +      fi
        do_rest
        return 0
        ;;
@@@ -911,27 -1202,26 +911,27 @@@ els
        revisions=$onto...$orig_head
        shortrevisions=$shorthead
  fi
 -format=$(git config --get rebase.instructionFormat)
 -# the 'rev-list .. | sed' requires %m to parse; the instruction requires %H to parse
 -git rev-list $merges_option --format="%m%H ${format:-%s}" \
 -      --reverse --left-right --topo-order \
 -      $revisions ${restrict_revision+^$restrict_revision} | \
 -      sed -n "s/^>//p" |
 -while read -r sha1 rest
 -do
 -
 -      if test -z "$keep_empty" && is_empty_commit $sha1 && ! is_merge_commit $sha1
 -      then
 -              comment_out="$comment_char "
 -      else
 -              comment_out=
 -      fi
 +if test t != "$preserve_merges"
 +then
 +      git rebase--helper --make-script ${keep_empty:+--keep-empty} \
 +              $revisions ${restrict_revision+^$restrict_revision} >"$todo"
 +else
 +      format=$(git config --get rebase.instructionFormat)
 +      # the 'rev-list .. | sed' requires %m to parse; the instruction requires %H to parse
 +      git rev-list $merges_option --format="%m%H ${format:-%s}" \
 +              --reverse --left-right --topo-order \
 +              $revisions ${restrict_revision+^$restrict_revision} | \
 +              sed -n "s/^>//p" |
 +      while read -r sha1 rest
 +      do
 +
 +              if test -z "$keep_empty" && is_empty_commit $sha1 && ! is_merge_commit $sha1
 +              then
 +                      comment_out="$comment_char "
 +              else
 +                      comment_out=
 +              fi
  
 -      if test t != "$preserve_merges"
 -      then
 -              printf '%s\n' "${comment_out}pick $sha1 $rest" >>"$todo"
 -      else
                if test -z "$rebase_root"
                then
                        preserve=t
                        touch "$rewritten"/$sha1
                        printf '%s\n' "${comment_out}pick $sha1 $rest" >>"$todo"
                fi
 -      fi
 -done
 +      done
 +fi
  
  # Watch for commits that been dropped by --cherry-pick
  if test t = "$preserve_merges"
@@@ -981,7 -1271,7 +981,7 @@@ the
  fi
  
  test -s "$todo" || echo noop >> "$todo"
 -test -n "$autosquash" && rearrange_squash "$todo"
 +test -z "$autosquash" || git rebase--helper --rearrange-squash || exit
  test -n "$cmd" && add_exec_commands "$todo"
  
  todocount=$(git stripspace --strip-comments <"$todo" | wc -l)
@@@ -1017,24 -1307,13 +1017,24 @@@ git_sequence_editor "$todo" |
  has_action "$todo" ||
        return 2
  
 -check_todo_list
 +git rebase--helper --check-todo-list || {
 +      ret=$?
 +      checkout_onto
 +      exit $ret
 +}
  
  expand_todo_ids
  
 -test -d "$rewritten" || test -n "$force_rebase" || skip_unnecessary_picks
 +test -d "$rewritten" || test -n "$force_rebase" ||
 +onto="$(git rebase--helper --skip-unnecessary-picks)" ||
 +die "Could not skip unnecessary pick commands"
  
  checkout_onto
 +if test -z "$rebase_root" && test ! -d "$rewritten"
 +then
 +      require_clean_work_tree "rebase"
 +      exec git rebase--helper ${force_rebase:+--no-ff} --continue
 +fi
  do_rest
  
  }