しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | # Copyright (c) 2007, Nanako Shiraishi |
| 3 | |
Stephan Beyer | a5ab00c | 2008-08-16 05:27:31 +0200 | [diff] [blame] | 4 | dashless=$(basename "$0" | sed -e 's/-/ /') |
| 5 | USAGE="list [<options>] |
| 6 | or: $dashless (show | drop | pop ) [<stash>] |
| 7 | or: $dashless apply [--index] [<stash>] |
| 8 | or: $dashless branch <branchname> [<stash>] |
| 9 | or: $dashless [save [--keep-index] [<message>]] |
| 10 | or: $dashless clear" |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 11 | |
James Bowes | 3cd2491 | 2007-07-06 15:57:47 -0400 | [diff] [blame] | 12 | SUBDIRECTORY_OK=Yes |
Junio C Hamano | 8f321a3 | 2007-11-06 01:50:02 -0800 | [diff] [blame] | 13 | OPTIONS_SPEC= |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 14 | . git-sh-setup |
| 15 | require_work_tree |
Junio C Hamano | ceff079 | 2007-07-25 15:32:22 -0700 | [diff] [blame] | 16 | cd_to_toplevel |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 17 | |
| 18 | TMP="$GIT_DIR/.git-stash.$$" |
| 19 | trap 'rm -f "$TMP-*"' 0 |
| 20 | |
| 21 | ref_stash=refs/stash |
| 22 | |
| 23 | no_changes () { |
Johannes Schindelin | 6848d58 | 2008-05-14 18:03:59 +0100 | [diff] [blame] | 24 | git diff-index --quiet --cached HEAD --ignore-submodules -- && |
| 25 | git diff-files --quiet --ignore-submodules |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 26 | } |
| 27 | |
| 28 | clear_stash () { |
Junio C Hamano | 3023dc6 | 2008-01-05 01:35:54 -0800 | [diff] [blame] | 29 | if test $# != 0 |
| 30 | then |
| 31 | die "git stash clear with parameters is unimplemented" |
| 32 | fi |
Junio C Hamano | 0e32126 | 2008-12-07 17:30:35 -0800 | [diff] [blame] | 33 | if current=$(git rev-parse --verify $ref_stash 2>/dev/null) |
Junio C Hamano | 7ab3cc7 | 2007-07-26 23:24:28 -0700 | [diff] [blame] | 34 | then |
Emil Medve | a9ee9bf | 2007-11-07 15:10:27 -0600 | [diff] [blame] | 35 | git update-ref -d $ref_stash $current |
Junio C Hamano | 7ab3cc7 | 2007-07-26 23:24:28 -0700 | [diff] [blame] | 36 | fi |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 37 | } |
| 38 | |
Junio C Hamano | bc9e739 | 2007-07-08 01:38:32 -0700 | [diff] [blame] | 39 | create_stash () { |
Junio C Hamano | 9f62e18 | 2007-07-04 22:46:09 -0700 | [diff] [blame] | 40 | stash_msg="$1" |
| 41 | |
Junio C Hamano | 1eff26c | 2008-09-04 02:41:22 -0700 | [diff] [blame] | 42 | git update-index -q --refresh |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 43 | if no_changes |
| 44 | then |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 45 | exit 0 |
| 46 | fi |
しらいしななこ | f12e925 | 2007-07-28 10:44:48 +0900 | [diff] [blame] | 47 | |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 48 | # state of the base commit |
Junio C Hamano | 5be6007 | 2007-07-02 22:52:14 -0700 | [diff] [blame] | 49 | if b_commit=$(git rev-parse --verify HEAD) |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 50 | then |
Pascal Obry | aa4f31d | 2007-11-26 23:04:28 +0100 | [diff] [blame] | 51 | head=$(git log --no-color --abbrev-commit --pretty=oneline -n 1 HEAD --) |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 52 | else |
| 53 | die "You do not have the initial commit yet" |
| 54 | fi |
| 55 | |
Junio C Hamano | 5be6007 | 2007-07-02 22:52:14 -0700 | [diff] [blame] | 56 | if branch=$(git symbolic-ref -q HEAD) |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 57 | then |
| 58 | branch=${branch#refs/heads/} |
| 59 | else |
| 60 | branch='(no branch)' |
| 61 | fi |
| 62 | msg=$(printf '%s: %s' "$branch" "$head") |
| 63 | |
| 64 | # state of the index |
Junio C Hamano | 5be6007 | 2007-07-02 22:52:14 -0700 | [diff] [blame] | 65 | i_tree=$(git write-tree) && |
Jean-Luc Herren | 6143fa2 | 2007-09-12 20:45:03 +0200 | [diff] [blame] | 66 | i_commit=$(printf 'index on %s\n' "$msg" | |
Junio C Hamano | 5be6007 | 2007-07-02 22:52:14 -0700 | [diff] [blame] | 67 | git commit-tree $i_tree -p $b_commit) || |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 68 | die "Cannot save the current index state" |
| 69 | |
| 70 | # state of the working tree |
| 71 | w_tree=$( ( |
Junio C Hamano | b24f56d | 2007-07-08 01:28:18 -0700 | [diff] [blame] | 72 | rm -f "$TMP-index" && |
| 73 | cp -p ${GIT_INDEX_FILE-"$GIT_DIR/index"} "$TMP-index" && |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 74 | GIT_INDEX_FILE="$TMP-index" && |
| 75 | export GIT_INDEX_FILE && |
Junio C Hamano | b24f56d | 2007-07-08 01:28:18 -0700 | [diff] [blame] | 76 | git read-tree -m $i_tree && |
Junio C Hamano | 5be6007 | 2007-07-02 22:52:14 -0700 | [diff] [blame] | 77 | git add -u && |
| 78 | git write-tree && |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 79 | rm -f "$TMP-index" |
| 80 | ) ) || |
| 81 | die "Cannot save the current worktree state" |
| 82 | |
| 83 | # create the stash |
Junio C Hamano | 9f62e18 | 2007-07-04 22:46:09 -0700 | [diff] [blame] | 84 | if test -z "$stash_msg" |
| 85 | then |
| 86 | stash_msg=$(printf 'WIP on %s' "$msg") |
| 87 | else |
| 88 | stash_msg=$(printf 'On %s: %s' "$branch" "$stash_msg") |
| 89 | fi |
| 90 | w_commit=$(printf '%s\n' "$stash_msg" | |
Junio C Hamano | 5be6007 | 2007-07-02 22:52:14 -0700 | [diff] [blame] | 91 | git commit-tree $w_tree -p $b_commit -p $i_commit) || |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 92 | die "Cannot record working tree state" |
Junio C Hamano | bc9e739 | 2007-07-08 01:38:32 -0700 | [diff] [blame] | 93 | } |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 94 | |
Junio C Hamano | bc9e739 | 2007-07-08 01:38:32 -0700 | [diff] [blame] | 95 | save_stash () { |
SZEDER Gábor | 7bedebc | 2008-06-27 16:37:15 +0200 | [diff] [blame] | 96 | keep_index= |
| 97 | case "$1" in |
| 98 | --keep-index) |
| 99 | keep_index=t |
| 100 | shift |
| 101 | esac |
| 102 | |
Junio C Hamano | 47629dc | 2008-07-23 13:33:44 -0700 | [diff] [blame] | 103 | stash_msg="$*" |
Junio C Hamano | bc9e739 | 2007-07-08 01:38:32 -0700 | [diff] [blame] | 104 | |
Junio C Hamano | 1eff26c | 2008-09-04 02:41:22 -0700 | [diff] [blame] | 105 | git update-index -q --refresh |
Junio C Hamano | bc9e739 | 2007-07-08 01:38:32 -0700 | [diff] [blame] | 106 | if no_changes |
| 107 | then |
Marco Costalba | 7c390d9 | 2008-01-05 09:57:24 +0100 | [diff] [blame] | 108 | echo 'No local changes to save' |
Junio C Hamano | bc9e739 | 2007-07-08 01:38:32 -0700 | [diff] [blame] | 109 | exit 0 |
| 110 | fi |
| 111 | test -f "$GIT_DIR/logs/$ref_stash" || |
| 112 | clear_stash || die "Cannot initialize stash" |
| 113 | |
| 114 | create_stash "$stash_msg" |
Emil Medve | a9ee9bf | 2007-11-07 15:10:27 -0600 | [diff] [blame] | 115 | |
| 116 | # Make sure the reflog for stash is kept. |
| 117 | : >>"$GIT_DIR/logs/$ref_stash" |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 118 | |
Junio C Hamano | 9f62e18 | 2007-07-04 22:46:09 -0700 | [diff] [blame] | 119 | git update-ref -m "$stash_msg" $ref_stash $w_commit || |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 120 | die "Cannot save the current status" |
Marco Costalba | 7c390d9 | 2008-01-05 09:57:24 +0100 | [diff] [blame] | 121 | printf 'Saved working directory and index state "%s"\n' "$stash_msg" |
SZEDER Gábor | 7bedebc | 2008-06-27 16:37:15 +0200 | [diff] [blame] | 122 | |
| 123 | git reset --hard |
| 124 | |
| 125 | if test -n "$keep_index" && test -n $i_tree |
| 126 | then |
| 127 | git read-tree --reset -u $i_tree |
| 128 | fi |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 129 | } |
| 130 | |
Jeff King | 401de40 | 2007-07-02 00:21:24 -0400 | [diff] [blame] | 131 | have_stash () { |
Junio C Hamano | 0e32126 | 2008-12-07 17:30:35 -0800 | [diff] [blame] | 132 | git rev-parse --verify $ref_stash >/dev/null 2>&1 |
Jeff King | 401de40 | 2007-07-02 00:21:24 -0400 | [diff] [blame] | 133 | } |
| 134 | |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 135 | list_stash () { |
Jeff King | 401de40 | 2007-07-02 00:21:24 -0400 | [diff] [blame] | 136 | have_stash || return 0 |
Pascal Obry | aa4f31d | 2007-11-26 23:04:28 +0100 | [diff] [blame] | 137 | git log --no-color --pretty=oneline -g "$@" $ref_stash -- | |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 138 | sed -n -e 's/^[.0-9a-f]* refs\///p' |
| 139 | } |
| 140 | |
| 141 | show_stash () { |
Junio C Hamano | 5be6007 | 2007-07-02 22:52:14 -0700 | [diff] [blame] | 142 | flags=$(git rev-parse --no-revs --flags "$@") |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 143 | if test -z "$flags" |
| 144 | then |
| 145 | flags=--stat |
| 146 | fi |
Brandon Casey | da65e7c | 2008-09-23 18:57:09 -0500 | [diff] [blame] | 147 | |
Brandon Casey | 875471c | 2008-10-02 18:52:11 -0500 | [diff] [blame] | 148 | w_commit=$(git rev-parse --verify --default $ref_stash "$@") && |
| 149 | b_commit=$(git rev-parse --verify "$w_commit^") && |
Shawn O. Pearce | e7187e4 | 2007-10-19 02:18:14 -0400 | [diff] [blame] | 150 | git diff $flags $b_commit $w_commit |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 151 | } |
| 152 | |
| 153 | apply_stash () { |
Junio C Hamano | 1eff26c | 2008-09-04 02:41:22 -0700 | [diff] [blame] | 154 | git update-index -q --refresh && |
Johannes Schindelin | 6848d58 | 2008-05-14 18:03:59 +0100 | [diff] [blame] | 155 | git diff-files --quiet --ignore-submodules || |
Stephen Haberman | 2a79d2f | 2008-09-29 04:12:04 -0500 | [diff] [blame] | 156 | die 'Cannot apply to a dirty working tree, please stage your changes' |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 157 | |
Johannes Schindelin | 150937c | 2007-07-02 12:14:49 +0100 | [diff] [blame] | 158 | unstash_index= |
| 159 | case "$1" in |
| 160 | --index) |
| 161 | unstash_index=t |
| 162 | shift |
| 163 | esac |
| 164 | |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 165 | # current index state |
Junio C Hamano | 5be6007 | 2007-07-02 22:52:14 -0700 | [diff] [blame] | 166 | c_tree=$(git write-tree) || |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 167 | die 'Cannot apply a stash in the middle of a merge' |
| 168 | |
Junio C Hamano | cbeaccc | 2007-07-27 23:41:31 -0700 | [diff] [blame] | 169 | # stash records the work tree, and is a merge between the |
| 170 | # base commit (first parent) and the index tree (second parent). |
Brandon Casey | 875471c | 2008-10-02 18:52:11 -0500 | [diff] [blame] | 171 | s=$(git rev-parse --verify --default $ref_stash "$@") && |
Junio C Hamano | 5be6007 | 2007-07-02 22:52:14 -0700 | [diff] [blame] | 172 | w_tree=$(git rev-parse --verify "$s:") && |
Junio C Hamano | cbeaccc | 2007-07-27 23:41:31 -0700 | [diff] [blame] | 173 | b_tree=$(git rev-parse --verify "$s^1:") && |
| 174 | i_tree=$(git rev-parse --verify "$s^2:") || |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 175 | die "$*: no valid stashed state found" |
| 176 | |
Junio C Hamano | cbeaccc | 2007-07-27 23:41:31 -0700 | [diff] [blame] | 177 | unstashed_index_tree= |
SZEDER Gábor | 7bedebc | 2008-06-27 16:37:15 +0200 | [diff] [blame] | 178 | if test -n "$unstash_index" && test "$b_tree" != "$i_tree" && |
| 179 | test "$c_tree" != "$i_tree" |
Junio C Hamano | cbeaccc | 2007-07-27 23:41:31 -0700 | [diff] [blame] | 180 | then |
Shawn O. Pearce | 89d750b | 2007-10-18 21:28:43 -0400 | [diff] [blame] | 181 | git diff-tree --binary $s^2^..$s^2 | git apply --cached |
Johannes Schindelin | 150937c | 2007-07-02 12:14:49 +0100 | [diff] [blame] | 182 | test $? -ne 0 && |
| 183 | die 'Conflicts in index. Try without --index.' |
| 184 | unstashed_index_tree=$(git-write-tree) || |
| 185 | die 'Could not save index tree' |
| 186 | git reset |
Junio C Hamano | cbeaccc | 2007-07-27 23:41:31 -0700 | [diff] [blame] | 187 | fi |
Johannes Schindelin | 150937c | 2007-07-02 12:14:49 +0100 | [diff] [blame] | 188 | |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 189 | eval " |
| 190 | GITHEAD_$w_tree='Stashed changes' && |
| 191 | GITHEAD_$c_tree='Updated upstream' && |
| 192 | GITHEAD_$b_tree='Version stash was based on' && |
| 193 | export GITHEAD_$w_tree GITHEAD_$c_tree GITHEAD_$b_tree |
| 194 | " |
| 195 | |
| 196 | if git-merge-recursive $b_tree -- $c_tree $w_tree |
| 197 | then |
| 198 | # No conflict |
Junio C Hamano | cbeaccc | 2007-07-27 23:41:31 -0700 | [diff] [blame] | 199 | if test -n "$unstashed_index_tree" |
| 200 | then |
| 201 | git read-tree "$unstashed_index_tree" |
Junio C Hamano | 83b3df7 | 2007-07-27 23:51:45 -0700 | [diff] [blame] | 202 | else |
| 203 | a="$TMP-added" && |
Shawn O. Pearce | 89d750b | 2007-10-18 21:28:43 -0400 | [diff] [blame] | 204 | git diff-index --cached --name-only --diff-filter=A $c_tree >"$a" && |
Junio C Hamano | 83b3df7 | 2007-07-27 23:51:45 -0700 | [diff] [blame] | 205 | git read-tree --reset $c_tree && |
| 206 | git update-index --add --stdin <"$a" || |
| 207 | die "Cannot unstage modified files" |
| 208 | rm -f "$a" |
Junio C Hamano | cbeaccc | 2007-07-27 23:41:31 -0700 | [diff] [blame] | 209 | fi |
| 210 | git status || : |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 211 | else |
| 212 | # Merge conflict; keep the exit status from merge-recursive |
Johannes Schindelin | 150937c | 2007-07-02 12:14:49 +0100 | [diff] [blame] | 213 | status=$? |
Junio C Hamano | cbeaccc | 2007-07-27 23:41:31 -0700 | [diff] [blame] | 214 | if test -n "$unstash_index" |
| 215 | then |
| 216 | echo >&2 'Index was not unstashed.' |
| 217 | fi |
Johannes Schindelin | 150937c | 2007-07-02 12:14:49 +0100 | [diff] [blame] | 218 | exit $status |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 219 | fi |
| 220 | } |
| 221 | |
Brandon Casey | e25d5f9 | 2008-02-22 13:04:54 -0600 | [diff] [blame] | 222 | drop_stash () { |
| 223 | have_stash || die 'No stash entries to drop' |
| 224 | |
| 225 | if test $# = 0 |
| 226 | then |
| 227 | set x "$ref_stash@{0}" |
| 228 | shift |
| 229 | fi |
| 230 | # Verify supplied argument looks like a stash entry |
Brandon Casey | 875471c | 2008-10-02 18:52:11 -0500 | [diff] [blame] | 231 | s=$(git rev-parse --verify "$@") && |
Junio C Hamano | 0e32126 | 2008-12-07 17:30:35 -0800 | [diff] [blame] | 232 | git rev-parse --verify "$s:" > /dev/null 2>&1 && |
| 233 | git rev-parse --verify "$s^1:" > /dev/null 2>&1 && |
| 234 | git rev-parse --verify "$s^2:" > /dev/null 2>&1 || |
Brandon Casey | e25d5f9 | 2008-02-22 13:04:54 -0600 | [diff] [blame] | 235 | die "$*: not a valid stashed state" |
| 236 | |
| 237 | git reflog delete --updateref --rewrite "$@" && |
| 238 | echo "Dropped $* ($s)" || die "$*: Could not drop stash entry" |
| 239 | |
| 240 | # clear_stash if we just dropped the last stash entry |
Junio C Hamano | 0e32126 | 2008-12-07 17:30:35 -0800 | [diff] [blame] | 241 | git rev-parse --verify "$ref_stash@{0}" > /dev/null 2>&1 || clear_stash |
Brandon Casey | e25d5f9 | 2008-02-22 13:04:54 -0600 | [diff] [blame] | 242 | } |
| 243 | |
Abhijit Menon-Sen | 656b503 | 2008-07-03 11:46:05 +0530 | [diff] [blame] | 244 | apply_to_branch () { |
| 245 | have_stash || die 'Nothing to apply' |
| 246 | |
| 247 | test -n "$1" || die 'No branch name specified' |
| 248 | branch=$1 |
| 249 | |
| 250 | if test -z "$2" |
| 251 | then |
| 252 | set x "$ref_stash@{0}" |
| 253 | fi |
| 254 | stash=$2 |
| 255 | |
| 256 | git-checkout -b $branch $stash^ && |
| 257 | apply_stash --index $stash && |
| 258 | drop_stash $stash |
| 259 | } |
| 260 | |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 261 | # Main command set |
| 262 | case "$1" in |
Junio C Hamano | fcb10a9 | 2007-07-02 23:15:45 -0700 | [diff] [blame] | 263 | list) |
| 264 | shift |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 265 | if test $# = 0 |
| 266 | then |
| 267 | set x -n 10 |
| 268 | shift |
| 269 | fi |
| 270 | list_stash "$@" |
| 271 | ;; |
| 272 | show) |
| 273 | shift |
| 274 | show_stash "$@" |
| 275 | ;; |
Kevin Leung | 683befa | 2007-12-03 10:34:05 +0800 | [diff] [blame] | 276 | save) |
| 277 | shift |
Junio C Hamano | 47629dc | 2008-07-23 13:33:44 -0700 | [diff] [blame] | 278 | save_stash "$@" |
Kevin Leung | 683befa | 2007-12-03 10:34:05 +0800 | [diff] [blame] | 279 | ;; |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 280 | apply) |
| 281 | shift |
| 282 | apply_stash "$@" |
| 283 | ;; |
| 284 | clear) |
Junio C Hamano | 3023dc6 | 2008-01-05 01:35:54 -0800 | [diff] [blame] | 285 | shift |
| 286 | clear_stash "$@" |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 287 | ;; |
Junio C Hamano | bc9e739 | 2007-07-08 01:38:32 -0700 | [diff] [blame] | 288 | create) |
| 289 | if test $# -gt 0 && test "$1" = create |
| 290 | then |
| 291 | shift |
| 292 | fi |
| 293 | create_stash "$*" && echo "$w_commit" |
| 294 | ;; |
Brandon Casey | e25d5f9 | 2008-02-22 13:04:54 -0600 | [diff] [blame] | 295 | drop) |
| 296 | shift |
| 297 | drop_stash "$@" |
| 298 | ;; |
Brandon Casey | bd56ff5 | 2008-02-22 16:52:50 -0600 | [diff] [blame] | 299 | pop) |
| 300 | shift |
| 301 | if apply_stash "$@" |
| 302 | then |
| 303 | test -z "$unstash_index" || shift |
| 304 | drop_stash "$@" |
| 305 | fi |
| 306 | ;; |
Abhijit Menon-Sen | 656b503 | 2008-07-03 11:46:05 +0530 | [diff] [blame] | 307 | branch) |
| 308 | shift |
| 309 | apply_to_branch "$@" |
| 310 | ;; |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 311 | *) |
Kevin Leung | 683befa | 2007-12-03 10:34:05 +0800 | [diff] [blame] | 312 | if test $# -eq 0 |
Junio C Hamano | 9f62e18 | 2007-07-04 22:46:09 -0700 | [diff] [blame] | 313 | then |
Wincent Colaiuta | 97bc00a | 2007-12-22 18:31:25 +0100 | [diff] [blame] | 314 | save_stash && |
SZEDER Gábor | 7bedebc | 2008-06-27 16:37:15 +0200 | [diff] [blame] | 315 | echo '(To restore them type "git stash apply")' |
Kevin Leung | 683befa | 2007-12-03 10:34:05 +0800 | [diff] [blame] | 316 | else |
| 317 | usage |
Junio C Hamano | 9f62e18 | 2007-07-04 22:46:09 -0700 | [diff] [blame] | 318 | fi |
Junio C Hamano | 9f62e18 | 2007-07-04 22:46:09 -0700 | [diff] [blame] | 319 | ;; |
しらいしななこ | f2c66ed | 2007-06-30 14:37:09 +0900 | [diff] [blame] | 320 | esac |