Merge branch 'bc/unstash-clean-crufts'
authorJunio C Hamano <gitster@pobox.com>
Wed, 5 Oct 2011 19:36:17 +0000 (12:36 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 5 Oct 2011 19:36:17 +0000 (12:36 -0700)
* bc/unstash-clean-crufts:
git-stash: remove untracked/ignored directories when stashed
t/t3905: add missing '&&' linkage
git-stash.sh: fix typo in error message
t/t3905: use the name 'actual' for test output, swap arguments to test_cmp

1  2 
git-stash.sh
diff --combined git-stash.sh
index 31dec0abf13ee7d6ded313b24253cd12254f1685,31579172302afc996b5090d03ac48c4d5e717421..c76669284ce48411b0cd580c5943e3eb0a785884
@@@ -15,7 -15,6 +15,7 @@@ SUBDIRECTORY_OK=Ye
  OPTIONS_SPEC=
  START_DIR=`pwd`
  . git-sh-setup
 +. git-sh-i18n
  require_work_tree
  cd_to_toplevel
  
@@@ -48,7 -47,7 +48,7 @@@ untracked_files () 
  clear_stash () {
        if test $# != 0
        then
 -              die "git stash clear with parameters is unimplemented"
 +              die "$(gettext "git stash clear with parameters is unimplemented")"
        fi
        if current=$(git rev-parse --verify $ref_stash 2>/dev/null)
        then
@@@ -71,7 -70,7 +71,7 @@@ create_stash () 
        then
                head=$(git rev-list --oneline -n 1 HEAD --)
        else
 -              die "You do not have the initial commit yet"
 +              die "$(gettext "You do not have the initial commit yet")"
        fi
  
        if branch=$(git symbolic-ref -q HEAD)
@@@ -86,7 -85,7 +86,7 @@@
        i_tree=$(git write-tree) &&
        i_commit=$(printf 'index on %s\n' "$msg" |
                git commit-tree $i_tree -p $b_commit) ||
 -              die "Cannot save the current index state"
 +              die "$(gettext "Cannot save the current index state")"
  
        if test -n "$untracked"
        then
                        git write-tree &&
                        rm -f "$TMPindex"
                ) ) ||
 -                      die "Cannot save the current worktree state"
 +                      die "$(gettext "Cannot save the current worktree state")"
  
        else
  
  
                # state of the working tree
                w_tree=$(GIT_INDEX_FILE="$TMP-index" git write-tree) ||
 -              die "Cannot save the current worktree state"
 +              die "$(gettext "Cannot save the current worktree state")"
  
                git diff-tree -p HEAD $w_tree > "$TMP-patch" &&
                test -s "$TMP-patch" ||
 -              die "No changes selected"
 +              die "$(gettext "No changes selected")"
  
                rm -f "$TMP-index" ||
 -              die "Cannot remove temporary index (can't happen)"
 +              die "$(gettext "Cannot remove temporary index (can't happen)")"
  
        fi
  
                stash_msg=$(printf 'On %s: %s' "$branch" "$stash_msg")
        fi
        w_commit=$(printf '%s\n' "$stash_msg" |
 -              git commit-tree $w_tree -p $b_commit -p $i_commit $untracked_commit_option) ||
 -              die "Cannot record working tree state"
 +      git commit-tree $w_tree -p $b_commit -p $i_commit $untracked_commit_option) ||
 +      die "$(gettext "Cannot record working tree state")"
  }
  
  save_stash () {
                        break
                        ;;
                -*)
 -                      echo "error: unknown option for 'stash save': $1"
 -                      echo "       To provide a message, use git stash save -- '$1'"
 +                      option="$1"
 +                      # TRANSLATORS: $option is an invalid option, like
 +                      # `--blah-blah'. The 7 spaces at the beginning of the
 +                      # second line correspond to "error: ". So you should line
 +                      # up the second line with however many characters the
 +                      # translation of "error: " takes in your language. E.g. in
 +                      # English this is:
 +                      #
 +                      #    $ git stash save --blah-blah 2>&1 | head -n 2
 +                      #    error: unknown option for 'stash save': --blah-blah
 +                      #           To provide a message, use git stash save -- '--blah-blah'
 +                      eval_gettextln "$("error: unknown option for 'stash save': \$option
 +       To provide a message, use git stash save -- '\$option'")"
                        usage
                        ;;
                *)
  
        if test -n "$patch_mode" && test -n "$untracked"
        then
-           die "Can't use --patch and ---include-untracked or --all at the same time"
+           die "Can't use --patch and --include-untracked or --all at the same time"
        fi
  
        stash_msg="$*"
        git update-index -q --refresh
        if no_changes
        then
 -              say 'No local changes to save'
 +              say "$(gettext "No local changes to save")"
                exit 0
        fi
        test -f "$GIT_DIR/logs/$ref_stash" ||
 -              clear_stash || die "Cannot initialize stash"
 +              clear_stash || die "$(gettext "Cannot initialize stash")"
  
        create_stash "$stash_msg" $untracked
  
        : >>"$GIT_DIR/logs/$ref_stash"
  
        git update-ref -m "$stash_msg" $ref_stash $w_commit ||
 -              die "Cannot save the current status"
 +              die "$(gettext "Cannot save the current status")"
        say Saved working directory and index state "$stash_msg"
  
        if test -z "$patch_mode"
                test "$untracked" = "all" && CLEAN_X_OPTION=-x || CLEAN_X_OPTION=
                if test -n "$untracked"
                then
-                       git clean --force --quiet $CLEAN_X_OPTION
+                       git clean --force --quiet -d $CLEAN_X_OPTION
                fi
  
                if test "$keep_index" = "t" && test -n $i_tree
                fi
        else
                git apply -R < "$TMP-patch" ||
 -              die "Cannot remove worktree changes"
 +              die "$(gettext "Cannot remove worktree changes")"
  
                if test "$keep_index" != "t"
                then
@@@ -348,21 -336,18 +348,21 @@@ parse_flags_and_rev(
  
        case $# in
                0)
 -                      have_stash || die "No stash found."
 +                      have_stash || die "$(gettext "No stash found.")"
                        set -- ${ref_stash}@{0}
                ;;
                1)
                        :
                ;;
                *)
 -                      die "Too many revisions specified: $REV"
 +                      die "$(eval_gettext "Too many revisions specified: \$REV")"
                ;;
        esac
  
 -      REV=$(git rev-parse --quiet --symbolic --verify $1 2>/dev/null) || die "$1 is not valid reference"
 +      REV=$(git rev-parse --quiet --symbolic --verify $1 2>/dev/null) || {
 +              reference="$1"
 +              die "$(eval_gettext "\$reference is not valid reference")"
 +      }
  
        i_commit=$(git rev-parse --quiet --verify $REV^2 2>/dev/null) &&
        set -- $(git rev-parse $REV $REV^1 $REV: $REV^1: $REV^2: 2>/dev/null) &&
@@@ -387,10 -372,7 +387,10 @@@ is_stash_like(
  }
  
  assert_stash_like() {
 -      is_stash_like "$@" || die "'$*' is not a stash-like commit"
 +      is_stash_like "$@" || {
 +              args="$*"
 +              die "$(eval_gettext "'\$args' is not a stash-like commit")"
 +      }
  }
  
  is_stash_ref() {
  }
  
  assert_stash_ref() {
 -      is_stash_ref "$@" || die "'$*' is not a stash reference"
 +      is_stash_ref "$@" || {
 +              args="$*"
 +              die "$(eval_gettext "'\$args' is not a stash reference")"
 +      }
  }
  
  apply_stash () {
  
        assert_stash_like "$@"
  
 -      git update-index -q --refresh || die 'unable to refresh index'
 +      git update-index -q --refresh || die "$(gettext "unable to refresh index")"
  
        # current index state
        c_tree=$(git write-tree) ||
 -              die 'Cannot apply a stash in the middle of a merge'
 +              die "$(gettext "Cannot apply a stash in the middle of a merge")"
  
        unstashed_index_tree=
        if test -n "$INDEX_OPTION" && test "$b_tree" != "$i_tree" &&
        then
                git diff-tree --binary $s^2^..$s^2 | git apply --cached
                test $? -ne 0 &&
 -                      die 'Conflicts in index. Try without --index.'
 +                      die "$(gettext "Conflicts in index. Try without --index.")"
                unstashed_index_tree=$(git write-tree) ||
 -                      die 'Could not save index tree'
 +                      die "$(gettext "Could not save index tree")"
                git reset
        fi
  
                        git diff-index --cached --name-only --diff-filter=A $c_tree >"$a" &&
                        git read-tree --reset $c_tree &&
                        git update-index --add --stdin <"$a" ||
 -                              die "Cannot unstage modified files"
 +                              die "$(gettext "Cannot unstage modified files")"
                        rm -f "$a"
                fi
                squelch=
                status=$?
                if test -n "$INDEX_OPTION"
                then
 -                      echo >&2 'Index was not unstashed.'
 +                      gettextln "Index was not unstashed." >&2
                fi
                exit $status
        fi
@@@ -487,15 -466,14 +487,15 @@@ drop_stash () 
        assert_stash_ref "$@"
  
        git reflog delete --updateref --rewrite "${REV}" &&
 -              say "Dropped ${REV} ($s)" || die "${REV}: Could not drop stash entry"
 +              say "$(eval_gettext "Dropped \${REV} (\$s)")" ||
 +              die "$(eval_gettext "\${REV}: Could not drop stash entry")"
  
        # clear_stash if we just dropped the last stash entry
        git rev-parse --verify "$ref_stash@{0}" > /dev/null 2>&1 || clear_stash
  }
  
  apply_to_branch () {
 -      test -n "$1" || die 'No branch name specified'
 +      test -n "$1" || die "$(gettext "No branch name specified")"
        branch=$1
        shift 1
  
@@@ -566,7 -544,7 +566,7 @@@ branch
        case $# in
        0)
                save_stash &&
 -              say '(To restore them type "git stash apply")'
 +              say "$(gettext "(To restore them type \"git stash apply\")")"
                ;;
        *)
                usage